/*	NOTES: 
*	- must use CDATA for any node containing HTML
*	- must use CDATA for any node containing string that will be translated
*/



// [moved inside object] the labels for the language selection menu
// var Languages = {label: '', list: []};
// [moved inside object] the labels for the country selection menu
// var Countries = {label: '', list: []};
// [temp] the title for the page header
var Title = "";
// [temp] the labels for the header navigation menu
var HeaderNav = [];
// label for the header title
var Header = "";


/**
*	Data object
*/
var Data = {
	xml: "data/data.xml",
	
	loadXML: function () {
		var ref = this;

		new Ajax.Request (this.xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); readyToLoad = true;},
			onFailure: function (transport) { log(ref.xml + " failed to load");}
		})	
	
	},
	
	parseXML: function (obj) {

		var ref = this;	
		log('build data xml');
		
		this.os = [];
		this.wmp = [];
		this.pmdm = [];
		this.country = [];
		this.language = [];
		this.mediatype = [];
		this.srt = [];
		this.thankyou = [];
		this.selectlabel = [];
		this.otherlabel = [];
		this.updatelabel = [];
		this.authcodeerror = [];
		this.missingauthcode = [];
		this.requesterror = [];
		this.provider = [];
		this.header = [];
		this.changecountry = [];
		this.consumernotice = [];
		
		// parse country selection
		var countryNode  = obj.responseXML.getElementsByTagName('country');
		var countryList = $A(countryNode[0].getElementsByTagName('item'));
		countryList.each(function (item) {

			var temp = [];
			var selectionList =  $A(item.getElementsByTagName('selection'));
			selectionList.each(function (subitem) {
				temp.push({id: getNodeValue(subitem,'id'), label: getNodeValue(subitem,'label')});

			});
			ref.country[getNodeValue(item,'id')] = { selectlabel: getNodeValue(item,'selectlabel'), selections:temp };
		
		});			
		

		// parse common items
		var selectlabelNode  = obj.responseXML.getElementsByTagName('selectlabel');
		var selectlabelList = $A(selectlabelNode[0].getElementsByTagName('item'));
		selectlabelList.each(function (item) {
			ref.selectlabel[getNodeValue(item,'id')] = { label: getNodeValue(item,'label')};
		
		});			
		
		var otherlabelNode  = obj.responseXML.getElementsByTagName('otherlabel');
		var otherlabelList = $A(otherlabelNode[0].getElementsByTagName('item'));
		otherlabelList.each(function (item) {
			ref.otherlabel[getNodeValue(item,'id')] = { label: getNodeValue(item,'label')};
		
		});	
		
		var updatelabelNode  = obj.responseXML.getElementsByTagName('updatelabel');
		var updatelabelList = $A(updatelabelNode[0].getElementsByTagName('item'));
		updatelabelList.each(function (item) {
			ref.updatelabel[getNodeValue(item,'id')] = { label: getNodeValue(item,'label')};
		
		});	
		
		var authcodeNode  = obj.responseXML.getElementsByTagName('authcodeerror');
		var authcodeList = $A(authcodeNode[0].getElementsByTagName('item'));
		authcodeList.each(function (item) {
			ref.authcodeerror[getNodeValue(item,'id')] = { label: getNodeValue(item,'label')};
		
		});	
		
		var missauthcodeNode  = obj.responseXML.getElementsByTagName('missingauthcode');
		var missauthcodeList = $A(missauthcodeNode[0].getElementsByTagName('item'));
		missauthcodeList.each(function (item) {
			ref.missingauthcode[getNodeValue(item,'id')] = { label: getNodeValue(item,'label')};
		
		});	
		
		var headerNode  = obj.responseXML.getElementsByTagName('header');
		var headerList = $A(headerNode[0].getElementsByTagName('item'));
		headerList.each(function (item) {
			ref.header.push({ label: getNodeValue(item,'label'),headerlabel : getNodeValue(item,'headerlabel').split(",").clone(),lang:getNodeValue(item,'id'), source:getNodeValue(item,'source')}) ;
		
		});	
		
		var languageNode  = obj.responseXML.getElementsByTagName('language');
		var languageList = $A(languageNode[0].getElementsByTagName('item'));
		languageList.each(function (item) {

			var temp = [];
			var selectionList =  $A(item.getElementsByTagName('selection'));
			selectionList.each(function (subitem) {
				temp.push({id: getNodeValue(subitem,'id'), label: getNodeValue(subitem,'label')});

			});
			ref.language[getNodeValue(item,'id')] = { selectlabel: getNodeValue(item,'selectlabel'), selections:temp };
		
		});	
		
		//parse consumer notice nodes
		var noticeNode  = obj.responseXML.getElementsByTagName('consumernotice');
		var noticeList = $A(noticeNode[0].getElementsByTagName('item'));
		noticeList.each(function (item) {
			ref.consumernotice[getNodeValue(item,'id')] = {mssg: getNodeValue(item,'mssg')};
		
		});		

		// parse support request type selection
		var srtNode  = obj.responseXML.getElementsByTagName('srt');
		var srtList = $A(srtNode[0].getElementsByTagName('item'));
		srtList.each(function (item) {

			var temp = [];
			var selectionList =  $A(item.getElementsByTagName('selection'));
			selectionList.each(function (subitem) {
				temp.push({id: getNodeValue(subitem,'id'), label: getNodeValue(subitem,'label')});

			});
			ref.srt[getNodeValue(item,'id')] = { selections:temp };
		});		


		// parse thank you
		var tyNode  = obj.responseXML.getElementsByTagName('thankyou');
		var tyLabels = $A(tyNode[0].getElementsByTagName('item'));
		tyLabels.each(function (item) {
			ref.thankyou[getNodeValue(item,'id')] = {thankyou1:getNodeValue(item,'thankyou1'), 
								thankyou2:getNodeValue(item,'thankyou2'), 
								thankyou3:getNodeValue(item,'thankyou3'),
								thankyou4:getNodeValue(item,'thankyou4')};
			
		});	

		// parse request error
		var reNode  = obj.responseXML.getElementsByTagName('requesterror');
		var reLabels = $A(reNode[0].getElementsByTagName('item'));
		reLabels.each(function (item) {
			ref.requesterror[getNodeValue(item,'id')] = {fillrequiredfields:getNodeValue(item,'fillrequiredfields'), 
								firstnamemissing:getNodeValue(item,'firstnamemissing'), 
								emailmissing:getNodeValue(item,'emailmissing'), 
								emailinvalid:getNodeValue(item,'emailinvalid'), 
								commentsmissing:getNodeValue(item,'commentsmissing')};
			
		});	
		
		
		// parse media type selection
		var mtNode  = obj.responseXML.getElementsByTagName('mediatype');
		var mtOptions = $A(mtNode[0].getElementsByTagName('item'));
		mtOptions.each(function (item) {
			ref.mediatype.push(item.firstChild.nodeValue);
		});
		
		// parse change country label
		var ccNode  = obj.responseXML.getElementsByTagName('changecountry');
		var ccItems = $A(ccNode[0].getElementsByTagName('item'));
		ccItems.each(function (item) {
			var id = getNodeValue(item,'id');
			var countrylabel = getNodeValue(item,'label');
			ref.changecountry.push({id:id, countrylabel:countrylabel});
		});

		// parse OS
		var osNode  = obj.responseXML.getElementsByTagName('os');
		var osOptions = $A(osNode[0].getElementsByTagName('item'));
		osOptions.each(function (item) {
			ref.os.push(item.firstChild.nodeValue);
		});
	
		// parse WMP
		var wmpNode  = obj.responseXML.getElementsByTagName('wmp');
		var wmpOptions = $A(wmpNode[0].getElementsByTagName('item'));
		wmpOptions.each(function (item) {
			ref.wmp.push(item.firstChild.nodeValue);
		});	
		
		// Parse  Portable Media Device and their manufacturers
		var pmdmNode  = obj.responseXML.getElementsByTagName('pmdm');
		var manufacturer = $A(pmdmNode[0].getElementsByTagName('item'));
		manufacturer.each(function (item) {
			var temp = [];
			var itemNode =  $A(item.getElementsByTagName('subitem'));
			itemNode.each(function (subitem) {
				temp.push(subitem.firstChild.nodeValue);
			});
			ref.pmdm.push({manufacturer: getNodeValue(item,'name'), devices:temp });
			
		});
		
		// Parse Provider information
		var providerNode  = obj.responseXML.getElementsByTagName('provider');
		var proItem = $A(providerNode[0].getElementsByTagName('item'));
		proItem.each(function (item) {
		ref.provider[getNodeValue(item,'name')] = {id:getNodeValue(item,'id'), 
		name:getNodeValue(item,'name'), 
		email:getNodeValue(item,'email')} 
		});	
		
		if(document.location.hash == '' || document.location.hash.include('landing-content')){
			setTimeout(buildLandingPage,10);
		}
		/*else if(document.location.hash){
		// get hash value
		var HashLocationName = document.location.hash;
		HashLocationName = HashLocationName.replace("#","");
		
		if(HashLocationName == 'support-form-content' ){
		setSource('EC');
		buildECSupportForm();
		}
		if(HashLocationName == 'supportform-content')
			loadSupportForm();
		
	//		document.getElementById(selectedSection+"-content").style.display = (selectedSection+"-content" == HashLocationName) ? 'block' : 'none';
	}*/
		
//		[test]		
		/*var location=window.location.search;
		var section=new Array();
		section = location.split('?');
		log('window location : '+section.length);
		if(section.length>1)
		{
			var sectionName = section[1].split('=');
			log('window location'+sectionName[2]);
			if(sectionName[1] == 'SupportForm')
			{
				if(selectedSource == 'DC')
					SupportForm.loadXML("/starcopy_web/support/Supportform.jsp?language=" + selectedLang);
				else if(selectedSource == 'EC')
				{
					buildECSupportForm();
	//				setTimeout(buildECSupportForm(),1000);
				}
			}
			else if(sectionName[1].include('Support'))
			{
	//			var langID=sectionName[1].split('=');
				buildSupport(sectionName[2]);
			}
		}
		else
		{
	//		loadRequiredInfo();
			loadLandingPage();
		}*/
		
	},
	
	getCountrySelectLabel:function (lang) {
		return country[lang].selectLabel;
	},
	
	getLanguageSelectLabel:function (lang) {
		return language[lang].selectLabel;
	}
	,getProviderEmail:function(arg)
	{
		return this.provider[arg].email;
	}
	,getHeader:function(lang,source)
	{
		var searchStr='DC';
		if(source =='DCOD' || source == 'DCON' || source == '' || source == 'DC')
		{
			searchStr = 'DC';
		}
		else
		{
			searchStr = 'EC';
		}
		var label = '';
		this.header.each(function(item){
			if(item.lang == lang && item.source == searchStr)
				label = item.label;
		})
		return label;
	}
	,getHeaderLabel:function(lang,source)
	{
		var searchStr='DC';
		if(source =='DCOD' || source == 'DCON' || source == '' || source == 'DC')
		{
			searchStr = 'DC';
		}
		else
		{
			searchStr = 'EC';
		}
		var label = '';
		this.header.each(function(item){
			if(item.lang == lang && item.source == searchStr)
				label = item.headerlabel;
		})
		return label;
	}
	,getChangeCountryLabel:function(lang)
	{
		var label = '';
		this.changecountry.each(function(item){
			if(item.id == lang)
			{
				label = item.countrylabel;
			}
		})
		return label;
	}
};


/**
*	Terms of Use object
*/
var TermsOfUse = {
	xml: "data/terms_en.xml",
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		
		this.content = getNodeValue(obj.responseXML,'content');
		this.language = getNodeValue(obj.responseXML,'language');
		this.country = getNodeValue(obj.responseXML,'country');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		
		HeaderNav =[];
		Header = '';
		// parse the header title
		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();

		//has been optimized, language file is in single xml file
		// parse language selection data
		this.languageNav = {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
		
		
		// parse country selection data
		/*this.countryNav =  {label: getNodeValue(obj.responseXML,'navcountrylabel'), list: []};
		var csNode  = obj.responseXML.getElementsByTagName('navcountry');
		var csLangs = $A(csNode[0].getElementsByTagName('item'));
		csLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'country');
			ref.countryNav.list.push({id:id, label:label});
		});*/
				
		buildTerms(this.country);
//		buildHeader();
	}

};


/**
*	Privacy Policy
*/
var PrivacyPolicy = {
	xml: "data/privacy_en.xml",
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		
		this.content = getNodeValue(obj.responseXML,'content');
		this.language = getNodeValue(obj.responseXML,'language');
		this.country = getNodeValue(obj.responseXML,'country');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		
		// parse the header title
		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
		//has been optimized xml language files in one file
		// parse language selection data
		this.languageNav = {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
		
		
		// parse country selection data
		/*this.countryNav =  {label: getNodeValue(obj.responseXML,'navcountrylabel'), list: []};
		var csNode  = obj.responseXML.getElementsByTagName('navcountry');
		var csLangs = $A(csNode[0].getElementsByTagName('item'));
		csLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'country');
			ref.countryNav.list.push({id:id, label:label});
		});*/
		
		buildPrivacy(this.country);
//		buildHeader();
	}
};



/**
*	Feedback Form
*/
var FeedbackForm = {
	xml: "data/feedbackform_en.xml",
	textlabels: {},
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		log('parsed feedback xml');
		
		this.language = getNodeValue(obj.responseXML,'language');
		this.label = getNodeValue(obj.responseXML,'label');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
//		this.country = getNodeValue(obj.responseXML,'country');
//		this.source = getNodeValue(obj.responseXML,'source');
		this.groups = [];
		
		// parse the header title
		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
			
		//xml file optimized into 1 xml file
		// parse language selection data
		this.languageNav = {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			ref.languageNav.list.push({id:getNodeValue(item,'id'), label:getNodeValue(item,'Language')});
		});
		
		
		// parse form items
		var groupNode  = obj.responseXML.getElementsByTagName('group');
		var itemList = $A(groupNode[0].getElementsByTagName('item'));
		itemList.each(function (item) {
		
			ref.groups.push({
				id:getNodeValue(item,'groupid'), 
				label:getNodeValue(item,'grouplabel'), 
				formtype:getNodeValue(item,'formtype'), 
				required:getNodeValue(item,'required'),
				selection:getNodeValue(item,'selection').split(",").clone()});
			ref.textlabels[getNodeValue(item,'groupid')] = {label:getNodeValue(item,'grouplabel'), formtype:getNodeValue(item,'formtype'), required:getNodeValue(item,'required')};
		});			
	
		
		buildFeedback();
		buildHeader();
	},
	
	getTextLabel:function (id) {
		var result = "";
		if (this.textlabels[id] != undefined) result = this.textlabels[id].label;
		return result;
	}

};


/**
*	Landing Page object
*/
var LandingPage = {
	
	xml: "data/landingpage_en.xml",
	
	loadXML: function () {
		
		var ref = this;
		
		new Ajax.Request (this.xml, {
			method: 'get',
			onSuccess: function (transport) {ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely");},
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	},
	
	parseXML: function (obj) {
		
		var ref = this;
		this.language = getNodeValue(obj.responseXML,'language');
		// parse header
		var head = obj.responseXML.getElementsByTagName('header');
		Header = head[0].firstChild.nodeValue;//getNodeValue(obj.responseXML,'header');
		
		//xml has been optimized for 1 single language file
		// parse language selection data
		this.languageNav =  {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		if(lsNode != null)
		{
			var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
			lsLangs.each(function (item) {
				var id = getNodeValue(item,'id');
				var label = getNodeValue(item,'Language');
				ref.languageNav.list.push({id:id, label:label});
			});	
		}
		
		// parse digital copy data
		this.digitalcopy =  {languages: []};
		var dcNode  = obj.responseXML.getElementsByTagName('dcsupportcountry');
		if(dcNode != null)
		{
			var dcLangs = $A(dcNode[0].getElementsByTagName('item'));
			dcLangs.each(function (item) {
				var langid = getNodeValue(item,'langid');
				var countryid = getNodeValue(item,'countryid');
				var label = getNodeValue(item,'Country');
				var imageUrl = getNodeValue(item,'image');
				var dcsupportlabel = getNodeValue(item,'dcsupportlabel');
				var ecsupportlabel = getNodeValue(item,'eclabel');
				var titlelabel = getNodeValue(item,'label');
				var gobutton = getNodeValue(item,'button');
				ref.digitalcopy.languages.push({langid:langid, countryid:countryid, label:label, image:imageUrl, dclabel:dcsupportlabel, eclabel:ecsupportlabel, titlelabel:titlelabel, button:gobutton});
			});	
		}
		
		// parse online special features data
		this.onlineec =  {languages: []};
		var ecNode  = obj.responseXML.getElementsByTagName('eccountry');
		if(ecNode != null)
		{
			var ecLangs = $A(ecNode[0].getElementsByTagName('item'));
			ecLangs.each(function (item) {
				var langid = getNodeValue(item,'langid');
				var countryid = getNodeValue(item,'countryid');
				var label = getNodeValue(item,'Country');
				var imageUrl = getNodeValue(item,'image');
				ref.onlineec.languages.push({langid:langid, countryid:countryid, label:label, image:imageUrl});
			});	
		}
//		buildLandingPage();
//		buildHeader();		
	}
	,getDCSupportLabel:function (id) {
		var result = "";
		if(this.digitalcopy != undefined)
		{
			this.digitalcopy.languages.each(function(item){
				if (item.langid ==id)
				{
					result = item.dclabel;
				}
			})
		}
		return result;
	}
	,getECSupportLabel:function (id) {
		var result = "";
		if(this.digitalcopy != undefined)
		{
			this.digitalcopy.languages.each(function(item){
				if (item.langid ==id)
				{
					result = item.eclabel;
				}
			})
		}
		return result;
	}
	,getTitleLabel:function(id){
		var result = "";
		if(this.digitalcopy != undefined)
		{
			this.digitalcopy.languages.each(function(item){
				if (item.langid ==id)
				{
					result = item.titlelabel;
				}
			})
		}
		return result;
	}
	,getGoButtonText:function(id){
		var result = "";
		if(this.digitalcopy != undefined)
		{
			this.digitalcopy.languages.each(function(item){
				if (item.langid ==id)
				{
					result = item.button;
				}
			})
		}
		return result;
	},
	getlanguageID:function(countryID){
		var result = "";
		if(this.digitalcopy != undefined)
		{
			this.digitalcopy.languages.each(function(item){
				if (item.countryid ==countryID)
				{
					result = item.langid;
				}
			})
		}
		return result;
	}
};


/**
*	Home object
*/
var Home = {
	xml: "data/homeDC_en.xml",
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		
		this.source = getNodeValue(obj.responseXML,'source');
		this.language = getNodeValue(obj.responseXML,'language');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		this.sectionheader = getNodeValue(obj.responseXML,'sectionheader');

		// parse the header title
		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
		
		//xml language list optimized in one single xml file
		// parse language selection data
		if(selectedSource != 'EC')
		{
			this.languageNav =  {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
			var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
			var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
			lsLangs.each(function (item) {
				var id = getNodeValue(item,'id');
				var label = getNodeValue(item,'Language');
				ref.languageNav.list.push({id:id, label:label});
			});
		}
		
		// get the categories
		var catNode = $A(obj.responseXML.getElementsByTagName('category'));
		catNode.each(function (cat) {
			
			// parse overview data
			if (getNodeValue(cat,'id') == 'overview') {
			
				ref.overview = {label:getNodeValue(cat,'label'), list:[]};
				var itemNode = $A(cat.getElementsByTagName('item'));
				itemNode.each(function (item) {
					ref.overview.list.push({id:getNodeValue(item,'id'), question: getNodeValue(item,'question'), answer: getNodeValue(item,'answer')});
				});
			
			// parse top support questions data
			} else if (getNodeValue(cat,'id') == 'topsupport') {
			
				ref.topsupport = {label:getNodeValue(cat,'label'), morelabel:getNodeValue(cat,'morelabel'), list:[]};
				var itemNode = $A(cat.getElementsByTagName('item'));
				itemNode.each(function (item) {
					ref.topsupport.list.push({id:getNodeValue(item,'id'),question: getNodeValue(item,'question')});
				});
			
			}
		});
		
		buildHome();
		
//		buildHeader();
	}
};

/**
*	PID	Home object
*/
var PIDHome = {
	xml: "data/homePID.xml",
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		
		/*this.source = getNodeValue(obj.responseXML,'source');
		this.language = getNodeValue(obj.responseXML,'language');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		this.sectionheader = getNodeValue(obj.responseXML,'sectionheader');

		// parse the header title
		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
		
		//xml language list optimized in one single xml file
		// parse language selection data
		if(selectedSource != 'EC')
		{
			this.languageNav =  {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
			var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
			var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
			lsLangs.each(function (item) {
				var id = getNodeValue(item,'id');
				var label = getNodeValue(item,'Language');
				ref.languageNav.list.push({id:id, label:label});
			});
		}
		*/
		// get the categories
		//ref.language = 5;
		
		//ref.language = {list:[]};
		//ref.language.list.push({id:'this is my id'});
		ref.language = {list:[]};
		var catNode = $A(obj.responseXML.getElementsByTagName('language'));
		catNode.each(function (cat) {
				var items = [];
				//alert(getNodeValue(cat,'id'));
				//alert(getNodeValue(cat,'id'));
				//ref.language.push({id:getNodeValue(cat,'id')});
				var itemNode = $A(cat.getElementsByTagName('item'));
				itemNode.each(function (item) {
					
					//alert(getNodeValue(item,'id'));
					//alert(getNodeValue(item,'question'));
					items.push({question:getNodeValue(item,'question'),id:getNodeValue(item,'id')});
				});
			ref.language.list.push({langid:getNodeValue(cat,'id'), items:items});
				//ref.language.list.push({langid:getNodeValue(cat,'id')});
		});	
			
			/*
			// parse overview data
			if (getNodeValue(cat,'id') == 'overview') {
			
				ref.overview = {label:getNodeValue(cat,'label'), list:[]};
				var itemNode = $A(cat.getElementsByTagName('item'));
				itemNode.each(function (item) {
					ref.overview.list.push({id:getNodeValue(item,'id'), question: getNodeValue(item,'question'), answer: getNodeValue(item,'answer')});
				});
			
			// parse top support questions data
			} else if (getNodeValue(cat,'id') == 'topsupport') {
			
				ref.topsupport = {label:getNodeValue(cat,'label'), morelabel:getNodeValue(cat,'morelabel'), list:[]};
				var itemNode = $A(cat.getElementsByTagName('item'));
				itemNode.each(function (item) {
					ref.topsupport.list.push({id:getNodeValue(item,'id'),question: getNodeValue(item,'question')});
				});
			
			}*/
		
		
		//buildHome();
		
//		buildHeader();
	}
};
/**
*	Home object
*//*
var HomeEC = {
	xml: "data/homeEC_en.xml",
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		
		this.source = getNodeValue(obj.responseXML,'source');
		this.language = getNodeValue(obj.responseXML,'language');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		this.sectionheader = getNodeValue(obj.responseXML,'sectionheader');

		// parse the header title
		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
		HeaderNav1 = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
		
		// get the categories
		var catNode = $A(obj.responseXML.getElementsByTagName('category'));
		catNode.each(function (cat) {
			
			// parse overview data
			if (getNodeValue(cat,'id') == 'overview') {
			
				ref.overview = {label:getNodeValue(cat,'label'), list:[]};
				var itemNode = $A(cat.getElementsByTagName('item'));
				itemNode.each(function (item) {
					ref.overview.list.push({id:getNodeValue(item,'id'), question: getNodeValue(item,'question'), answer: getNodeValue(item,'answer')});
				});
			
			// parse top support questions data
			} else if (getNodeValue(cat,'id') == 'topsupport') {
			
				ref.topsupport = {label:getNodeValue(cat,'label'), morelabel:getNodeValue(cat,'morelabel'), list:[]};
				var itemNode = $A(cat.getElementsByTagName('item'));
				itemNode.each(function (item) {
					ref.topsupport.list.push({id:getNodeValue(item,'id'), question: getNodeValue(item,'question')});
				});
			
			}
		});
		
		buildHomeEC();
		
		buildHeader();
		
		
	}

};*/

/**
*	Getting Started object
*/
var GettingStarted = {
	xml: "data/gettingstarted_en.xml",
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { 
				log(ref.xml + " failed to load");	
			}
		})	
	
	},
	
	parseXML: function (obj) {
		log('getting started parsed');
		var ref = this;
        //		this.source = getNodeValue(obj.responseXML,'source');
		this.language = getNodeValue(obj.responseXML,'language');
		this.mediatype = getNodeValue(obj.responseXML,'mediatype');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
//		this.sectionheader = getNodeValue(obj.responseXML,'sectionheader');
//		this.steps = [];
		this.itemsArr = [];
		// parse the header title
		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
		
		//language list has been optimized
		// parse language selection data
		this.languageNav =  {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
		
		var items = obj.responseXML.getElementsByTagName('instructions');
		var sItems = $A(items[0].getElementsByTagName('source'));
		sItems.each(function (s){
			var items = [];
			var listItems = $A(s.getElementsByTagName('item'));
			listItems.each(function (item){
				var steps = [];
				var stepNode = $A(item.getElementsByTagName('step'));
				stepNode.each(function (step) {
					steps.push({label:getNodeValue(step,'label'), image:getNodeValue(step,'image'), instruction:getNodeValue(step,'instruction')});
				});
				items.push({collection:getNodeValue(item,'collection'),format:getNodeValue(item,'format'), header:getNodeValue(item,'sectionheader'), steps:steps });
				
			});
			
			ref.itemsArr.push({source:getNodeValue(s,'id'), items:items});
				
		})
		
		// get the categories
/*		var stepNode = $A(obj.responseXML.getElementsByTagName('step'));
		stepNode.each(function (step) {
			ref.steps.push({label:getNodeValue(step,'label'), image:getNodeValue(step,'image'), instruction:getNodeValue(step,'instruction')});
		});
*/		
		buildGettingStarted();
		
//		buildHeader();		
	}

};



/**
*	Required Info object
*/
var RequiredInfo = {
	xml: "data/requiredinfo_en.xml",
	textlabels: {},
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		
		this.language = getNodeValue(obj.responseXML,'language');
		this.label = getNodeValue(obj.responseXML,'label');
		this.groups = [];
		// parse the header title
//		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
//		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
		
		// get the groups
		var groupNode = $A(obj.responseXML.getElementsByTagName('group'));
		groupNode.each(function (group) {
		
			ref.groups.push({id:getNodeValue(group,'id'), 
				label:getNodeValue(group,'label'), 
				formtype:getNodeValue(group,'formtype'), 
				required:getNodeValue(group,'required')})
//				selection:getNodeValue(group,'selection').split("|").clone()});
				ref.textlabels[getNodeValue(group,'id')] = {label:getNodeValue(group,'label'), formtype:getNodeValue(group,'formtype'), required:getNodeValue(group,'required')};
		});		
		
		//language selection has been optimized
		// parse language selection data
		this.languageNav = {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
				
//		buildRequiredInfo();	
//		buildHeader();
//		checkRequiredInfo();	
//		showEditTitle(selectedLang);
		buildECSupportForm();
		
	},
	
	getTextLabel:function (id) {
		var result = "";
		if (this.textlabels[id] != undefined) result = this.textlabels[id].label;
		return result;
	}	

};


/**
*	Support object
*/
var SupportFormEC = {
	xml: "data/supportform_en.xml",

	textlabels: new Array(),
	
	loadXML: function (xml) {
//		buildLoadingPopup();	
	
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;

		log('parse Support Form');
				
		this.language = getNodeValue(obj.responseXML,'language');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		this.label = getNodeValue(obj.responseXML,'label');
		this.groups = new Array();

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").invoke('strip').clone();
	
		// parse header
		Header = getNodeValue(obj.responseXML,'header');
		
		//language selection optimized
		// parse language selection data
		this.languageNav =  {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
		
		// get the groups
		/*var groupNode  = obj.responseXML.getElementsByTagName('group');
		var groupItems = $A(groupNode[0].getElementsByTagName('item'));
		ref.textlabels=[];
		groupItems.each(function (group) {
		
			ref.groups.push({
				id:getNodeValue(group,'groupid'), 
				label:getNodeValue(group,'grouplabel'), 
				formtype:getNodeValue(group,'formtype'), 
				required:getNodeValue(group,'required')	})
//				selection:getNodeValue(group,'selection').split("|").clone()});

			ref.textlabels[getNodeValue(group,'groupid')] = {label:getNodeValue(group,'grouplabel'), formtype:getNodeValue(group,'formtype'), required:getNodeValue(group,'required')};

		});		
	
		// parse language selection data
		this.languageNav = {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});*/
		
		buildECSupportForm();	
		
//		buildHeader();			
	},
	
	getTextLabel:function (id) {
		var result = "";
		if (this.textlabels[id] != undefined) result = this.textlabels[id].label;
		return result;
	}	
	
};
/**
*	Support object
*/
var Support = {
	xml: "data/support_en.xml",
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely");},
			onFailure: function (transport) { log(ref.xml + " failed to load");	buildSupportForm1();}
		})	
	},
	
	parseXML: function (obj) {
		var ref = this;
		
//		this.source = getNodeValue(obj.responseXML,'source');
		this.language = getNodeValue(obj.responseXML,'language');
		this.source = getNodeValue(obj.responseXML,'source');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		this.faq = [];

		// parse the header title
//		Header = getNodeValue(obj.responseXML,'header');

		// parse the header navigation labels
//		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").clone();
		
		//language has been optimized
		// parse language selection data
	/*	this.languageNav =  {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
		*/
		// get the categories
		var catNode = $A(obj.responseXML.getElementsByTagName('category'));
		catNode.each(function (cat) {
			var itemNode = $A(cat.getElementsByTagName('item'));
			var itemsArray = [];
			itemNode.each(function (item) {
				var format =[];
				var source = [];
				var collectionID =[];
				var provider = [];
				var formats = $A(item.getElementsByTagName('Format'));
				var sources = $A(item.getElementsByTagName('Source'));
				var collectionids = $A(item.getElementsByTagName('Collectionid'));
				var providers = $A(item.getElementsByTagName('Provider'));
				sources.each(function (f){
					var id = f.firstChild.nodeValue;
					source.push({sourceid:id});
				})
				collectionids.each(function (f){
					var id = f.firstChild.nodeValue;
					collectionID.push({collectid:id});
				})
				providers.each(function (f){
					var id = f.firstChild.nodeValue;
					provider.push({providerid:id});
				})
				formats.each(function (f){
					var id = f.firstChild.nodeValue;
					format.push({formatid:id});
				})
				if(sources.length == 0)
				{
					source.push({sourceid:undefined});
				}
				if(collectionids.length == 0)
				{
					collectionID.push({collectid:undefined});
				}
				if(providers.length == 0)
				{
					provider.push({providerid:undefined});
				}
				if(formats.length == 0)
				{
					format.push({formatid:undefined});
				}
				itemsArray.push({id: getNodeValue(item,'faqid'), question: getNodeValue(item,'question'), format:format, collectionID: collectionID,answer: getNodeValue(item,'answer'),title: getNodeValue(item,'Title'), provider: provider, source: source, language: getNodeValue(item,'language')});
			});

			ref.faq.push({id: getNodeValue(cat,'id'), label: getNodeValue(cat,'label'), items: itemsArray});
			
		});
		
		/*var location = HashLocationName.split('&');
		var id = ''; 
		if(location.length>1)
		{
			id = location[1].split('=');
			buildSupport(id[1]);
		}
		else*/
		
			buildSupport();
		

//		buildHeader();		
	}

};

/**
*	Support Form object
*/
var SupportForm = {
	xml: "data/supportform_en.xml",

	textlabels: new Array(),
	
	loadXML: function (xml) {
		buildLoadingPopup();	
	
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely");},
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;

		log('parse Support Form');
			
		this.language = getNodeValue(obj.responseXML,'language');
		this.sectionlabel = getNodeValue(obj.responseXML,'sectionlabel');
		this.label = getNodeValue(obj.responseXML,'label');
		this.groups = new Array();

		// parse the header navigation labels
		HeaderNav = getNodeValue(obj.responseXML,'headerlabel').split(",").invoke('strip').clone();
	
		// parse header
		Header = getNodeValue(obj.responseXML,'header');
		
		//language selection data optimized
		// parse language selection data
		this.languageNav =  {label: getNodeValue(obj.responseXML,'navlanguagelabel'), list: []};
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
		
		// get the groups
		var groupNode  = obj.responseXML.getElementsByTagName('group');
		var groupItems = $A(groupNode[0].getElementsByTagName('item'));
		ref.textlabels=[];
		groupItems.each(function (group) {
		
			ref.groups.push({
				id:getNodeValue(group,'groupid'), 
				label:getNodeValue(group,'grouplabel'), 
				formtype:getNodeValue(group,'formtype'), 
				required:getNodeValue(group,'required')	})
//				selection:getNodeValue(group,'selection').split("|").clone()});

			ref.textlabels[getNodeValue(group,'groupid')] = {label:getNodeValue(group,'grouplabel'), formtype:getNodeValue(group,'formtype'), required:getNodeValue(group,'required')};

		});		
			
		buildSupportForm1();		
		
//		buildHeader();			
	},
	
	getTextLabel:function (id) {
		var result = "";
		if (this.textlabels[id] != undefined) result = this.textlabels[id].label;
		return result;
	}	
	
};


/**
*	Footer object
*/
var Footer = {
	xml: "data/footer.xml",
	
	loadXML: function (){
		var ref = this;

		new Ajax.Request (this.xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load"); }
		})	
	
	},
	
	parseXML: function (obj) {

		var ref = this;	
		
		var itemNode = $A(obj.responseXML.getElementsByTagName('item'));
		itemNode.each(function (item) {
			ref[getNodeValue(item,'lang')] = {feedbacklabel:getNodeValue(item,'feedbacklabel'), 
							privacylabel:getNodeValue(item,'privacylabel'), 
							termslabel:getNodeValue(item,'termslabel') };
		})	
//		if(selectedTitle != undefined || selectedTitle != null)
//			buildFooter();
		buildCopyright();
	},
	
	getLabel:function (lang, label) {
		return this[lang][label];
	}

};


/**
*	Copyright object
*/
var Copyright = {
	xml: "data/copyright.xml",
	
	loadXML: function () {
		var ref = this;

		new Ajax.Request (this.xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load"); }
		})	
	
	},
	
	parseXML: function (obj) {

		var ref = this;	
		
		var itemNode = $A(obj.responseXML.getElementsByTagName('item'));
		itemNode.each(function (item) {
			ref[getNodeValue(item,'language')] = getNodeValue(item,'copyright');
		})	

		buildCopyright();
				
	},
	
	getLabel:function (lang) {
		return this[lang];
	}

};



/**
*	Title map object
*/
var TitleMap = {
	xml: "/starcopy_web/support/Titlemap.jsp",
//	xml: "data/titlemap.xml",
	
	loadXML: function () {
		var ref = this;

		new Ajax.Request (this.xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load"); }
		})	
	
	},
	
	parseXML: function (obj) {
		log('title map xml parsed');	

		var ref = this;	
		this.list = [];
		this.temp = [];
		
		var movieNode  = obj.responseXML.getElementsByTagName('titlemap');
		var itemNode = $A(movieNode[0].getElementsByTagName('item'));
		itemNode.each(function (item) {
			ref.temp.push(getNodeValue(item,'title'));
/*			ref.list.push({
				language:getNodeValue(item,'Language'), 
				country:getNodeValue(item,'Country'),
				source:getNodeValue(item,'Source'), 
				mediatype: getNodeValue(item,'MediaType'),
				os: getNodeValue(item,'OperatingSystem'), 
				title: getNodeValue(item,'title'),
				sku: getNodeValue(item,'sku'),
				vendor: getNodeValue(item,'SupportedBy'),
				email: getNodeValue(item,'SupportEmail')
			});
*/		})	

		// sort list
		this.temp.sort();
		this.temp.each(function(itemA) {
			itemNode.each(function (itemB) {
				if (itemA == getNodeValue(itemB,'title')) {
					ref.list.push({
						language:getNodeValue(itemB,'Language'), 
						country:getNodeValue(itemB,'Country'),
						source:getNodeValue(itemB,'Source'), 
						mediatype: getNodeValue(itemB,'MediaType'),
						os: getNodeValue(itemB,'OperatingSystem'), 
						title: getNodeValue(itemB,'title'),
						sku: getNodeValue(itemB,'sku'),
						vendor: getNodeValue(itemB,'SupportedBy'),
						email: getNodeValue(itemB,'SupportEmail')
					});	
					throw $break;
				}
			})
		})

//		buildTitleMap();
				
	},
	
	getVendor: function (arg) {
		var ref = this;
		
		this.list.each(function(item) {		
			if (item.title == arg) {
				return item.vendor;
			}
		});
	},
	
	getLabel:function (lang) {
		return this[lang];
	}

};



/**
*	FAQ object
*/
var FAQ = {
	xml: "data/dcairs/questionnode.xml",

	list: [],
	
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely");},
			onFailure: function (transport) { log(ref.xml + " failed to load");	buildRequestForm();}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		log('parsed faq xml');
				
		this.language = getNodeValue(obj.responseXML,'language');
		this.description = getNodeValue(obj.responseXML,'description');		
		
		// parse the main faq
		var parentFAQ = $A(obj.responseXML.getElementsByTagName('faq'));	
		var parentFAQid = getNodeValue(parentFAQ[0],'id');
//		ref.list.clear();
		ref.list.push({id:getNodeValue(parentFAQ[0],'id'), question:getNodeValue(parentFAQ[0],'Question'), answer:getNodeValue(parentFAQ[0],'Answer'), qnodes: []});
		ref.qNodesIDlist = [];
		// parse the qnodes
		var parentQnodes = $A(obj.responseXML.getElementsByTagName('qnode'));	
		parentQnodes.each(function(item) {
			
			var faqNodes = $A(item.getElementsByTagName('faq'));
			var qNodes = getNodeValue(item,'qnode');
			var qNodeID = getNodeValue(item,'id');
			if (faqNodes.size() == 1) {		
				faqNodes.each(function (subitem) {
					if (subitem.hasChildNodes()) {
						var faqID =  getNodeValue(subitem,'id');
						if (qNodes == null || qNodes == undefined) {
							// do nothing
						} else {
							var qnodelist = qNodes.split(",").invoke('strip');
						}
						
						if (faqID != parentFAQid && !ref.qNodesIDlist.include(faqID))  {
							ref.qNodesIDlist.push(faqID);							
							ref.list.last().qnodes.push({id:qNodeID, question: getNodeValue(subitem,'Question'), answer: getNodeValue(subitem,'Answer'), qnodes: qnodelist});
						}
					}
				});
			}
		});
				
		/*
		var qNodes = $A(obj.responseXML.getElementsByTagName('qnode'));
		qNodes.each(function (item) {
			ref.list[faqID].qnode.push( { id:getNodeValue(item,'id'), question:getNodeValue(item,'question')} );
		});
		*/
		buildFAQ();
	}

};


/**
*	Support Request form submission object
*/
var RequestForm = {
	jsp: "/dvdsupport/EmailServlet?",
	//jsp:"http://10.140.204.24:8080/wbps/req/submitRequest.action?",
	//jsp:"http://preview.wbdigitalcopy.com/dvdsupport/EmailServlet?",
	//jsp: "http://10.140.204.24:8080/wbps/req/submitRequest.action?",
		
	list: [],
	
	loadXML: function (obj) {
		var ref = this;
		
		var queryStr = Object.toQueryString(obj);
		var fullURL = this.jsp;
		log('FULL URL:'+fullURL);
		//alert(obj);	
		new Ajax.Request (fullURL, {
			method: 'post',
			parameters:obj,
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) { log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		log('parsed email xml: '+selectedSource);
		
		// [todo] parse the success result
		 if(selectedSection == 'Feedback')	
			buildThankYouForFeedback('1');
		else if(selectedSource.include('DC') )
			buildThankYou(2);
		else
			buildThankYouForFeedback('2');
	}
}

/**
*	Title Map object
*/
var Titlemap = {
	xml: "data/Title_Map.xml",
	list :[],
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (ref.xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) {log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		var ref = this;
		log('parsed Titlemap xml');
				
		// parse the main faq
		var parentDisc = $A(obj.responseXML.getElementsByTagName('Disc'));
		parentDisc.each(function(item)
		{
			ref.disc = {list: [],country:[]};
			ref.disc.list.push({discId:getNodeValue(item,'DiscID')});
			ref.disc.list.push({name:getNodeValue(item,'Name')});
			ref.disc.list.push({language:getNodeValue(item,'Language')});
			ref.disc.list.push({source:getNodeValue(item,'Source')});
			
				if(getNodeValue(item,'Collection') != undefined)
				{//ref.disc.collection = getNodeValue(item,'Collection').split(",").invoke('strip').clone();
				  //alert(ref.disc.collection);
				 //alert(getNodeValue(item,'Collection').nextSibling);
				}
			
				//ref.disc.collection = getNodeValue(item,'Collection').split(",").invoke('strip').clone();
//			ref.disc.country = {label: getNodeValue(item,'Country'), list: []};
			var countryNode = $A(item.getElementsByTagName('Country'));
			countryNode.each(function (item) {
				
				var speccollection=[];
				var format = [];
				var formatNode = $A(item.getElementsByTagName('Format'));
				formatNode.each(function (item) {
						format.push({name:getNodeValue(item,'Name'),provider:getNodeValue(item,'Provider')});
					});
				if(getNodeValue(item,'Collection') != undefined){ 
				    speccollection.push({pidhubinfo:getNodeValue(item,'Collection').split(",").invoke('strip').clone()});
				}
					ref.disc.country.push({id:getNodeValue(item,'id'), producturl:getNodeValue(item,'ProductURL'),commerceurl:getNodeValue(item,'CommerceURL'),formatArr:format,pidhubsppt:speccollection});
				
			
			
			
			
			
			});
//			ref.disc.format = {label: getNodeValue(item,'Format'), list: []};	
			/*var formatNode = $A(item.getElementsByTagName('Format'));
			formatNode.each(function (item) {
					ref.disc.format.push({name:getNodeValue(item,'Name'),provider:getNodeValue(item,'Provider')});
				});*/
			ref.disc.list.push({edition:getNodeValue(item,'Edition')});
			ref.disc.list.push({productImage:getNodeValue(item,'ProductImage')});
			
				
			ref.list.push(ref.disc);
		});
	},
	
	getProvider:function(discId, format)
	{
		this.list.each(function(item){
			if(item.list.discId == discId)
			{
				log('discID: '+discId);
				item.list.format.each(function(arg){
					if(arg.name == format)
						return arg.provider;
				});
			}
		});
	},
	
	getFormat: function(discId)
	{
		this.list.each(function(item){
			if(item.list.discId == discId)
			{
				return item.list.format;
			}
		});
	},
	
	getSource: function(discId)
	{
		this.list.each(function(item){
			if(item.list.discId == discId)
			{
				return item.list.source;
			}
		});
	},
	
	getTitle: function(discId)
	{ 
		var flag = false; 
		this.list.each(function(item){
		item.list.each(function(arg){
			if(arg.discId == discId)
			{
				flag = true;
				log('discId :'+discId+' item.list.discId: '+item.list.discId);
				//return item.list.name;
			}
			if(arg.name != undefined && flag == true)
			{
				return arg.name;
			}
			})
		});
		return "Dark Knight";
	}
};

/**
*	Language object
*/
var LangSelector = {
	xml: "data/languageSelector.xml",
	list :[],
	langHeader :[],
	loadXML: function (xml) {
		var ref = this;
		
		new Ajax.Request (ref.xml, {
			method: 'get',
			onSuccess: function (transport) { ref.parseXML(transport); },
			onComplete: function (transport) {log(ref.xml + " loaded completely"); },
			onFailure: function (transport) { log(ref.xml + " failed to load");	}
		})	
	
	},
	
	parseXML: function (obj) {
		log('Navigation language parsed');
		var ref = this;
		
		
		//set up array vars
		this.languageNav =  {langHeader:[], list: []};
		// parse the 'Change language to:' navigation labels
		
		var lhNode  = obj.responseXML.getElementsByTagName('navlanguageheader');
		var lhLangs = $A(lhNode[0].getElementsByTagName('item'));
		lhLangs.each(function (item) {
			var langid = getNodeValue(item,'id');
			var langlabel = getNodeValue(item,'navlanguagelabel');
			ref.languageNav.langHeader.push({langid:langid, langlabel:langlabel});
		});
		
		// parse language selection data list
		
		var lsNode  = obj.responseXML.getElementsByTagName('navlanguage');
		var lsLangs = $A(lsNode[0].getElementsByTagName('item'));
		lsLangs.each(function (item) {
			var id = getNodeValue(item,'id');
			var label = getNodeValue(item,'Language');
			ref.languageNav.list.push({id:id, label:label});
		});
		
		//showhideLangList(true);
	}

};

