/*******************************************************************************
	
	JavaScript file
	Visparts HP
	
	(c) Copyright Visual Group Limited. All rights reserved.
	http://www.visualgroup.co.nz
	Author(s): Nathan Kennedy
	
*******************************************************************************/

var VispartsHp = {
	
	searchSubmitClick: false,
	serial: 0,
	sourceSearch: '/search.php?',
	
	authenticate: function(auth) {
		var requestId = this.getUnique();
		var source = this.sourceSearch;
		if(auth) {
			source += 'auth&';
		}
		source += 'callback='+this.urlEncode('VispartsHp.authenticateReturn')+'&';
		source += 'request_id='+this.urlEncode(requestId);
		this.createScriptElement(source,requestId);
	},
	
	authenticateReturn: function(jsonResult) {
		if(jsonResult.resultStatus == '200') {
			var innerHTML = 'Welcome, '+jsonResult.requester.companyName;
			document.getElementById('sign_in-span').innerHTML = innerHTML;
		}
	},
	
	createScriptElement: function(source,id) {
		var script = document.createElement('script');
		script.type = 'text/javascript';
		script.src = source;
		if(id) {
			script.id = id;
		}
		document.getElementsByTagName('head')[0].appendChild(script);
	},
	
	getUnique: function() {
		var unique = (new Date()).getTime()+'_'+this.serial;
		this.serial++;
		return unique;
	},
	
	imageShift: function(element,position) {
		if(!this.searchSubmitClick) {
			element.style.top = position;
		}
	},
	
	removeElementById: function(id) {
		var element = document.getElementById(id);
		element.parentNode.removeChild(element);
	},
	
	search: function(element,position,page,search) {
		this.imageShift(element,position);
		if(!this.searchSubmitClick) {
			this.searchSubmitClick = true;
		}
		var requestId = this.getUnique();
		var source = this.sourceSearch;
		page = page?page:1;
		source += 'callback='+this.urlEncode('VispartsHp.searchReturn')+'&';
		source += 'request_id='+this.urlEncode(requestId)+'&';
		source += 'page='+this.urlEncode(page)+'&';
		source += 'search='+this.urlEncode(search);
		
		this.createScriptElement(source,requestId);
	},
	
	searchReturn: function(jsonResult) {
		this.removeElementById(jsonResult.requestId);
		this.searchSubmitClick = false;
		this.imageShift(document.getElementById('search_submit_button'),'0px');
		
		var innerHTML = '';
		
		innerHTML += '<div class="search_results_index">';
		if(jsonResult.resultPage > 1) {
			innerHTML += '<a href="javascript:VispartsHp.search(document.getElementById(\'search_submit_button\'),\'-44px\','+(jsonResult.resultPage - 1)+',document.getElementById(\'search\').value);">Prev</a>&nbsp;&nbsp;&nbsp;&nbsp;';
		}
		innerHTML += '<a href="javascript:VispartsHp.search(document.getElementById(\'search_submit_button\'),\'-44px\','+(jsonResult.resultPage + 1)+',document.getElementById(\'search\').value);">Next</a>';
		innerHTML += '</div>';
		
		for(var i = 0; i < jsonResult.resultSetCount; i++) {
			var message = 'Part Inquiry: '+jsonResult.resultSet[i].code+' - '+jsonResult.resultSet[i].name;
			innerHTML += '<div class="search_results_item">';
			innerHTML += '<a class="search_results_item" href="http://www.visparts.co.nz/?';
			if(jsonResult.requester.firstName || jsonResult.requester.lastName) {
				innerHTML += 'contact[name]='+this.urlEncode(jsonResult.requester.firstName+' '+jsonResult.requester.lastName)+'&';
			}
			if(jsonResult.requester.companyName) {
				innerHTML += 'contact[company_name]='+this.urlEncode(jsonResult.requester.companyName)+'&';
			}
			if(jsonResult.requester.email) {
				innerHTML += 'contact[email]='+this.urlEncode(jsonResult.requester.email)+'&';
			}
			if(jsonResult.requester.phone) {
				innerHTML += 'contact[phone]='+this.urlEncode(jsonResult.requester.phone)+'&';
			}
			innerHTML += 'contact[request]='+this.urlEncode(message);
			innerHTML += '" target="_blank">';
			innerHTML += '<span class="search_results_item_code">'+jsonResult.resultSet[i].code+'</span>';
			innerHTML += '<span class="search_results_item_name">'+jsonResult.resultSet[i].name+'</span>';
			innerHTML += '<span class="search_results_item_price">'+jsonResult.resultSet[i].price+'</span>';
			innerHTML += '</a>';
			innerHTML += '</div>';
		}
		
		document.getElementById('search_results-container').innerHTML = innerHTML;
	},
	
	urlEncode: function(string) {
		string = escape(string);
		string = string.replace(/\+/g,'%2B');
		string = string.replace(/%20/g,'+');
		string = string.replace(/\*/g,'%2A');
		string = string.replace(/\//g,'%2F');
		string = string.replace(/@/g,'%40');
		return string;
	}
	
};
