/*
Project:		Online.nl Pakketkiezer
File:			javascript/pakketkiezer.js
Description:	Javascript xml parser 
Author:			Frank Broersen - Pit Group
Created:		12/01/2010
Last update:	14/01/2010
*/
(function() {

	var pakketKiezer = {

		/*
		 * Url to the xml file
		 */
		xmlFile : 'http://www.online.nl/js/pakketkiezer/v2/pakketten.xml',

		/*
		 * Object that holds the filters
		 */
		filter : {
			internet : 20,
			bellen : 'w',
			hdtv : ''
		},

		/*
		 * Object that holds the result package
		 */
		pakket : {

			gratis: {
				mbi		: 0,
				bellen	: 0,
				bundelkorting	: 0,
				bundelkortingb	: 0,
				virusfilter	: 0,
				wifi : 0,
				aansluitkosten : 0,
				kodak : 0,
				cadeau: 0
			},

			promoprijs: 0,

			listprijs: 0,

			link: '',
			
			orderlink: '',

			clicktag: '',

			/*
			 * setGratis
			 * setter for "gratis" object
			 */
			setGratis: function( name, value ) {
				switch( name ) {
					case 'mbi':
						this.gratis.mbi = value
						break;
					case 'wifi':
						this.gratis.wifi = value
						break;
					case 'bellen':
						this.gratis.bellen = value
						break;
					case 'bundelkorting':
						this.gratis.bundelkorting = value
						break;
					case 'virusfilter':
						this.gratis.virusfilter = value
						break;
					case 'aansluitkosten':
						this.gratis.aansluitkosten = value
						break;
					case 'kodak':
						this.gratis.kodak = value
						break;
					case 'cadeau':
						this.gratis.cadeau = value
						break;
				}
			}

		},

		/*
		 * Parse the xml using the filter & package object
		 */
		parseXml: function ( ) {

			/*
			 * Open xml file
			 */
			if (window.XMLHttpRequest)  {
			  xhttp = new XMLHttpRequest();
			} else {
			  xhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			xhttp.open("GET", pakketKiezer.xmlFile, false );
			xhttp.send("");
			xmlDoc = xhttp.responseXML;

			/*
			 * Loop through packages, if all filters apply, show the package
			 */
			var packages = xmlDoc.getElementsByTagName("pakket");
			var total = packages.length;
			for ( var i = 0; i < total; i++) {
				// if all filters apply, fill the package object
				if( packages[i].getAttribute('internet') == this.filter.internet ) {
					if( packages[i].getAttribute('bellen') == this.filter.bellen ) {
						if( packages[i].getAttribute('hdtv') == this.filter.hdtv ) {

							if( packages[i].getElementsByTagName('promoprijs')[0].firstChild != null ) {
								this.pakket.promoprijs = packages[i].getElementsByTagName('promoprijs')[0].firstChild.nodeValue;
							}else {
								this.pakket.promoprijs = '';
							}

							if( packages[i].getElementsByTagName('listprijs')[0].firstChild != null ) {
								this.pakket.listprijs = packages[i].getElementsByTagName('listprijs')[0].firstChild.nodeValue;
							} else {
								this.pakket.listprijs = '';
							}
							
							if( packages[i].getElementsByTagName('lijnhuur')[0].firstChild != null ) {
								this.pakket.lijnhuur = packages[i].getElementsByTagName('lijnhuur')[0].firstChild.nodeValue;
							} else {
								this.pakket.lijnhuur = '';
							}

							if( packages[i].getElementsByTagName('link')[0].firstChild != null ) {
								this.pakket.link = packages[i].getElementsByTagName('link')[0].firstChild.nodeValue;
							}
							
							if( packages[i].getElementsByTagName('orderlink')[0].firstChild != null ) {
								this.pakket.orderlink = packages[i].getElementsByTagName('orderlink')[0].firstChild.nodeValue;
							}

							if( packages[i].getElementsByTagName('clicktag')[0].firstChild != null ) {
								this.pakket.clicktag = packages[i].getElementsByTagName('clicktag')[0].firstChild.nodeValue;
							}
							
							if( packages[i].getElementsByTagName('gratis') != null ) {
								var gratis = packages[i].getElementsByTagName('gratis');
								for ( var j = 0; j < 8; j++) {
									this.pakket.setGratis( gratis[j].getAttribute('name'), gratis[j].firstChild.nodeValue );
								}
							}

							break; // no need to finish the loop if we have the right product
						}
					}
				}
			}
			return true;
		},

		/*
		 * UpdateCart
		 * Update the shopping cart
		 */
		updateCart: function() {

			/*
			 * Show the "Gratis" messages if a package has this option selected
			 */
			if( this.pakket.gratis.mbi == 1 ) {
				document.getElementById('g-mbi').style.display = 'block'; 
			} else {
				document.getElementById('g-mbi').style.display = 'none'; 
			}
			if( this.pakket.gratis.bellen == 1 ) {
				document.getElementById('g-bellen').style.display = 'block';
			} else {
				document.getElementById('g-bellen').style.display = 'none';
			}
			if( this.pakket.gratis.bundelkorting != 0) {
				document.getElementById('g-bundelkorting').style.display = 'block';
				document.getElementById('bundelkorting').innerHTML = this.pakket.gratis.bundelkorting;
			} else {
				document.getElementById('g-bundelkorting').style.display = 'none';
			}
			/*if( this.pakket.gratis.bundelkortingb == 1 ) {
				document.getElementById('g-bundelkortingb').style.display = 'block';
			} else {
				document.getElementById('g-bundelkortingb').style.display = 'none';
			}*/
			if( this.pakket.gratis.virusfilter == 1 ) {
				document.getElementById('g-virusfilter').style.display = 'block';
			} else {
				document.getElementById('g-virusfilter').style.display = 'none';
			}
			if( this.pakket.gratis.wifi == 1 ) {
				document.getElementById('g-wifi').style.display = 'block';
			} else {
				document.getElementById('g-wifi').style.display = 'none';
			}
			if( this.pakket.gratis.aansluitkosten == 1 ) {
				document.getElementById('g-aansluitkosten').style.display = 'block';
			} else {
				document.getElementById('g-aansluitkosten').style.display = 'none';
			}
			if( this.pakket.gratis.kodak == 1 ) {
				document.getElementById('g-kodak').style.display = 'block';
			} else {
				document.getElementById('g-kodak').style.display = 'none';
			}
			if( this.pakket.gratis.cadeau == 1 ) {
				document.getElementById('g-cadeau').style.display = 'block';
			} else {
				document.getElementById('g-cadeau').style.display = 'none';
			}

			/*
			 * Update the cart prices
			 * If there is no promotion price, show the "Altijd lage prijs" div
			 */
			if( this.pakket.promoprijs != '' ) {
				document.getElementById('p-change').style.display = 'block';
				document.getElementById('p-noChange').style.display = 'none';
				document.getElementById('p-promo-prijs1').innerHTML = '&euro; ' + this.pakket.promoprijs + ' ';
				document.getElementById('p-list-prijs1').innerHTML = '&euro; ' + this.pakket.listprijs + ' ';
				if(this.pakket.lijnhuur != '') {
					document.getElementById('p-lijnhuur1').style.visibility= 'visible';
					document.getElementById('p-lijnhuur2').style.visibility= 'hidden';
				} else {
					document.getElementById('p-lijnhuur1').style.visibility= 'hidden';
					document.getElementById('p-lijnhuur2').style.visibility= 'hidden';
				}
			} else {
				document.getElementById('p-change').style.display = 'none';
				document.getElementById('p-noChange').style.display = 'block';
				document.getElementById('p-promo-prijs2').innerHTML = '&euro; ' + this.pakket.listprijs + ' ';
				if(this.pakket.lijnhuur != '') {
					document.getElementById('p-lijnhuur1').style.visibility= 'hidden';
					document.getElementById('p-lijnhuur2').style.visibility= 'visible';
				} else {
					document.getElementById('p-lijnhuur1').style.visibility= 'hidden';
					document.getElementById('p-lijnhuur2').style.visibility= 'hidden';
				}
			}
			
			
			/*
			 * Update the url and the click tag
			 */
			document.getElementById('p-link').setAttribute('href', this.pakket.link + this.pakket.clicktag );
			document.getElementById('o-link').setAttribute('href', this.pakket.orderlink );
		},

		/*
		 * setActive
		 * Set active tick for a product
		 */
		setActive: function( name, type ) {
			switch( name ) {
				case 'internet':
					if( type == 4 ) {
						this.filter.internet = 4;
						document.getElementById('c-internet-20').style.display = 'none';
					    document.getElementById('c-internet-4').style.display = 'block';
						document.getElementById('internet-20').style.display = 'none';
						document.getElementById('internet-4').style.display = 'block';

						/*
						 * disable "bellen"
						 */
						/*this.filter.bellen = '';
						document.getElementById('c-bellen-o').style.display = 'none';
						document.getElementById('c-bellen-w').style.display = 'none';
						document.getElementById('bellen-w').style.display = 'none';
						document.getElementById('bellen-o').style.display = 'none';*/

						document.getElementById('nb').style.display = 'none'; /* show the overlay */
						
						//hide cadeau
						document.getElementById('cadeau_bellen_soms').style.display = 'none';
						document.getElementById('cadeau_bellen_vaak').style.display = 'none';						
					} else if( type == 20 ) {
						this.filter.internet = 20;
					    document.getElementById('c-internet-4').style.display = 'none';
					    document.getElementById('c-internet-20').style.display = 'block';
						document.getElementById('internet-4').style.display = 'none';
						document.getElementById('internet-20').style.display = 'block';

						document.getElementById('nb').style.display = 'none'; /* hide the overlay */
						
						//show cadeau
						document.getElementById('cadeau_bellen_soms').style.display = 'block';
						document.getElementById('cadeau_bellen_vaak').style.display = 'block';
					} 
					break;
				case 'bellen':
					//if( this.filter.internet != 4 ) {
						if( type == 'o' && this.filter.bellen != 'o' ) {
							this.filter.bellen = 'o';
						    document.getElementById('c-bellen-w').style.display = 'none';
							document.getElementById('c-bellen-o').style.display = 'block';
							document.getElementById('bellen-o').style.display = 'block';
							document.getElementById('bellen-w').style.display = 'none';
						} else if( type == 'w' && this.filter.bellen != 'w' ) {
							this.filter.bellen = 'w';
						    document.getElementById('c-bellen-o').style.display = 'none';
							document.getElementById('c-bellen-w').style.display = 'block';
							document.getElementById('bellen-o').style.display = 'none';
							document.getElementById('bellen-w').style.display = 'block';
						} else {
							this.filter.bellen = '';
							document.getElementById('c-bellen-o').style.display = 'none'; 
							document.getElementById('c-bellen-w').style.display = 'none'; 
							document.getElementById('bellen-o').style.display = 'none';
							document.getElementById('bellen-w').style.display = 'none';
						}
					//}
					break;
				case 'hdtv':
					if( type == 'e' && this.filter.hdtv != 'e' ) {
						this.filter.hdtv = 'e';
						document.getElementById('hdtv-f').style.display = 'none';
						document.getElementById('hdtv-e').style.display = 'block';
						document.getElementById('c-hdtv-f').style.display = 'none';
						document.getElementById('c-hdtv-e').style.display = 'block';
					} else if( type == 'f' && this.filter.hdtv != 'f' ) {
						this.filter.hdtv = 'f';
						document.getElementById('c-hdtv-e').style.display = 'none';
						document.getElementById('c-hdtv-f').style.display = 'block';
						document.getElementById('hdtv-e').style.display = 'none';
						document.getElementById('hdtv-f').style.display = 'block';
					} else {
						this.filter.hdtv = '';
						document.getElementById('c-hdtv-e').style.display = 'none';
						document.getElementById('c-hdtv-f').style.display = 'none';
						document.getElementById('hdtv-f').style.display = 'none';
						document.getElementById('hdtv-e').style.display = 'none';
					}
					break;
			}
		}

	}

	/*
	 * Check of the "pakketKiezer" is already defined elsewhere in the javascript
	 */
	if( ! window.pakketKiezer ) {
		window.pakketKiezer = pakketKiezer;
	} else {
		throw('Pakketkiezer is already defined.');
	}

})();
