// JavaScript Document
var file_path = getLocationUrl();
//var file_path = 'http://www.lasaj.com/';

function getLocationUrl(){
	var locationUrl = window.location.href;
	var locationUrlAry = locationUrl.split("/");
	var urlIs = '';
	for(i = 0;i < (locationUrlAry.length - 1);i++){
		urlIs+= locationUrlAry[i] + "/";
	}
	return urlIs;
}

var cartTotal = '0.00';

var ajax_answer_id = 'ajax-answer';
var flag_ajax_call = true;
var flag_ajax_call_ID = true;
var blockerIntr = 0;
var blockerIntrValue = 0;
var cartadd = false;

/*For Read Message Row Referance*/
var rowObjRef = null;

function Ajax_Objects(url,set_method,form_id_or_get_param,server_intr,call_for){
	var base_url = url;
	var ajax_call_for = call_for;
	var blockAreaId = 'menu-body';
	var form_type = '';
	var boundaryString = 'PoSTAjAX';
	var boundary = '--' + boundaryString;
	var setFormType = 0;

	switch(set_method){
		case 'GET':
			var Smethod_set = '';
			var method_set = 'GET';
			var getParam = form_id_or_get_param;
		break;
		case 'POST':
			var Smethod_set = '';
			var method_set = 'POST';
			var form_id = form_id_or_get_param;
			form_type = (document.getElementById(form_id) != null) ? document.getElementById(form_id).enctype : '';
		break;
		case 'POSTWGET':
			var Smethod_set = 'POSTWGET';
			var method_set = 'GET';
			var form_id = form_id_or_get_param;
		break;
		case 'GETWPOST':
			var Smethod_set = 'GETWPOST';
			var method_set = 'POST';
			var getParam = form_id_or_get_param;
		break;
	}
	
	var parm = '';
	var srvr_intraction_state = (server_intr != 'undefined') ? server_intr : false;
	var new_req;
	
	Ajax_Objects.prototype.creat_Object = function(){ 
		var xmlhttp;
		if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
			try{
				xmlhttp = new XMLHttpRequest();
				if (xmlhttp.overrideMimeType){
					xmlhttp.overrideMimeType('text/html');
				}
			}catch(e){
				xmlhttp = false;
			}
		}else if(window.ActiveXObject){
			try{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(e){
					xmlhttp = false;
				}
			}
		}
		return xmlhttp;
	}
	
	Ajax_Objects.prototype.Ajax_Call_Function = function(){
		var ajax_answer_id_obj = document.getElementById(ajax_answer_id);
		(typeof(ajax_answer_id_obj) == 'object' && ajax_answer_id_obj != null) ? (ajax_answer_id_obj.innerHTML = '') : '';
		if(form_type == 'multipart/form-data'){
			var contentType = 'multipart/form-data;boundary=' + boundaryString;
			setFormType = 1;
		}else if(form_type == 'application/x-www-form-urlencoded'){
			var contentType = 'application/x-www-form-urlencoded';
			setFormType = 2;
		}else if(form_type == 'text/plain'){
			var contentType = 'text/plain';
			setFormType = 2;
		}else if(Smethod_set == 'GETWPOST'){
			var contentType = 'text/plain';
			method_set = 'POST';
			setFormType = 2;
		}
		var parm = (method_set == 'POST' && Smethod_set != 'GETWPOST') ? this.prepear_param_form_post(form_id) : ((Smethod_set == 'GETWPOST') ? getParam : ((Smethod_set == 'POSTWGET') ? this.prepear_param_form_post(form_id) : getParam));
		new_req = new this.creat_Object();
		if(method_set == 'POST'){
			parm = parm;
			new_req.open(method_set, base_url, true);
			new_req.setRequestHeader("Content-type", contentType);
			if(setFormType != 1){
				new_req.setRequestHeader("Content-length", parm.length);
				new_req.setRequestHeader("Connection", "close");
			}
			new_req.send(parm);
			if(srvr_intraction_state)
				new_req.onreadystatechange = this.serverInteraction;
		}else if(method_set == 'GET'){
			parm = (parm != '') ? '?' + parm : '';
			new_req.open(method_set, base_url + parm);
			new_req.send('');
			if(srvr_intraction_state)
				new_req.onreadystatechange = this.serverInteraction;
		}
	}
	
	Ajax_Objects.prototype.serverInteraction = function(){
		var redy_state = new_req.readyState;
		var answer = '';
		answer = (redy_state == 4) ? new_req.responseText : '';
		switch(call_for){
			case 'MenuHwnd':
				if(redy_state == 1){
					
				}else if(redy_state == 4){
					document.getElementById('menuDisplayDiv').innerHTML = answer;
					remove_area_blocker();
				}
			break;
			case 'MenuAddToCart':
				if(redy_state == 1){
					
				}else if(redy_state == 4){
					document.getElementById('cartInfoDisplayPlace').innerHTML = answer;
					remove_area_blocker();
				}
			break;
		}
	}
	
	Ajax_Objects.prototype.prepear_param_form_post = function(form_id){
		//Work Only With : select-one,text,textarea,radio,checkbox,hidden;
		var form_obj = document.getElementById(form_id);
		var form_obj_elements_length = form_obj.elements.length;
		var param = '';
		var param1 = '';
		var paramFile = '';
		
		boundaryString = boundaryString;
		boundary = boundary;

		for(i = 0;i < form_obj_elements_length;i++){
			var element_obj = form_obj.elements[i];
			var element_type = element_obj.type;
			var element_id = element_obj.id;
			var element_name = element_obj.name;
			var element_value = element_obj.value;
			switch(element_type){
				case 'checkbox':
				case 'radio':
					var checkedIt = element_obj.checked;
					if(setFormType == 1 && checkedIt){
						param1 += ['\r\n',boundary,'Content-Disposition: form-data; name="' + element_name + '"','',element_value].join('\r\n');
					}else{
						var temp_parm = (checkedIt) ? element_name + '=' + element_value : '';	
					}
				break;
				case 'select-multiple':
					for(j = 0;j < element_obj.options.length;j++){
						if(element_obj.options[j].selected == true){
							var element_name_sm = element_id + '[' + j + ']';
							var element_value_sm = element_obj.options[j].value;
							if(setFormType == 1){
								param1 += ['\r\n',boundary,'Content-Disposition: form-data; name="' + element_name_sm + '"','',element_value_sm].join('\r\n');
							}else{
								var temp_parm = element_name_sm + '=' + element_value_sm;
							}
						}
					}
				break;
				case 'select-one':
				case 'text':
				case 'textarea':
				case 'hidden':
					if(setFormType == 1){
						param1 += ['\r\n',boundary,'Content-Disposition: form-data; name="' + element_name + '"','',element_value].join('\r\n');
					}else{
						var temp_parm = element_name + '=' + element_value;
					}
				break;
				
				case 'file':
					//var temp_parm = element_name + '=' + element_value;
					//paramFile += ['\r\n',boundary,'Content-Disposition: file; name="' + element_name + '"; filename="' + element_value + '"','Content-Type: text/plain'].join('\r\n');
				break;
				default:
					var temp_parm = element_name + '=' + element_value;
				break;
			}
			if(setFormType != 1){
				param += (temp_parm != '') ? (((param == '') ? '' : '&') + temp_parm) : '';
			}
		}
		if(setFormType == 1){
			param = [param1,boundary].join('\r\n');
		}else{
			param = param;
		}
		return param;
	}
}

function block_area(){
	var blockObj = document.getElementsByTagName('body')[0];
	var ajax_call_blockObjEx = document.getElementById('ajax_call_block');
	if(typeof(blockObj) == 'object' && blockObj != null && (typeof(ajax_call_blockObjEx) != 'object' || ajax_call_blockObjEx == null)){
		var itwidth = blockObj.offsetWidth;
		var itHeight = blockObj.offsetHeight;
		var itTop = blockObj.offsetTop;
		var itLeft = blockObj.offsetLeft;
		var newElement = document.createElement('div');
		newElement.setAttribute('id','ajax_call_block');
		newElement.style.width = itwidth+'px';
		newElement.style.height = itHeight+'px';
		newElement.style.position = 'absolute';
		newElement.style.top = '0px';
		newElement.style.left = '0px';
		newElement.style.background = 'url(images/pixel_trans.png) repeat';
		blockObj.appendChild(newElement);
		var blockerObj = document.getElementById('ajax_call_block');
		createBlockerLoader(blockerObj);
	}
}

function createBlockerLoader(obj){
	var blockerObj = obj;
	var posLeft = set_element_pos('left', 150, true);
	var posRight = set_element_pos('right', 77, true);
	blockerObj.innerHTML = '<div style="padding:4px;border:2px solid #EFE4D0;background:#9A2F00;position:fixed;width:189px;height:28px;top:' + (parseInt(posRight)+150) + 'px;left:' + posLeft + 'px;"><img src="images/loader_2.gif" width="24" height="24" style="float:left;margin:0px 4px 0px 0px;">' + ((cartadd) ? '<span style="color:#EFE4D0;font-size:16px;width:150px;height:24px;padding:2px 0px 2px 0px;font-weight:bold;float:right;">Item has been added..</span>' : '<span style="color:#EFE4D0;font-size:16px;width:150px;height:24px;padding:2px 0px 2px 0px;font-weight:bold;float:right;">Loading...</span>') + '</div></div>';
}

function remove_area_blocker(){
	var Elem = document.getElementById('ajax_call_block');
	var blockObj = document.getElementsByTagName('body')[0];
	if(typeof(Elem) == 'object' && Elem != null){
		blockObj.removeChild(Elem);
	}
}

function set_element_pos(posReturn,elementRValue,byscreen){
	var valueIs = '',ScreenWidth = '',ScreenHeight = '';
	switch(posReturn){
		case 'Left':
		case 'Lft':
		case 'LEFT':
		case 'LFT':
		case 'left':
		case 'lft':
			if(byscreen == true){
				ScreenWidth = screen.availWidth;
			}else{
				ScreenWidth = pageWidth();	
			}
			valueIs = ((ScreenWidth - elementRValue) / 2);
		break;
		case 'Right':
		case 'Rght':
		case 'RIGHT':
		case 'RGHT':
		case 'right':
		case 'rght':
			if(byscreen == true){
				ScreenHeight = screen.availHeight;
			}else{
				ScreenHeight = pageHeight();
			}
			valueIs = (((ScreenHeight - elementRValue) / 2) - (ScreenHeight - pageHeight()));
		break;
	}
	return valueIs;
}

// calculate the current window width //
function pageWidth() {
  return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
}

// calculate the current window height //
function pageHeight() {
  return window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
}

function callMenuDetail(menuKey){
	block_area();
	var menuKey = menuKey;
	var request_ajax_obj = new Ajax_Objects(file_path + 'MenuHwnd.php','GET','k=' + menuKey + '&c=MenuDetail',true,'MenuHwnd');
	request_ajax_obj.Ajax_Call_Function();
}

function GoToAddCart(menuKey,callAs){
	block_area();
	var callAs = (callAs != null && callAs != 'undefined') ? callAs : '';
	var menuKey = menuKey;
	var request_ajax_obj1 = new Ajax_Objects(file_path + 'MenuHwnd.php','GET','k=' + menuKey + '&x=' + callAs + '&c=GoToAddCart',true,'MenuAddToCart');
	request_ajax_obj1.Ajax_Call_Function();
}

function AddToCart(FormID){
	if(formOptionGroupCheck(FormID)){
		block_area();
		var FormID = FormID;
		var request_ajax_obj2 = new Ajax_Objects(file_path + 'MenuHwnd.php?c=ADDToCart','POST',FormID,true,'MenuAddToCart');
		request_ajax_obj2.Ajax_Call_Function();
	}
}

function RemoveFromCart(menuKey,callAs){
	block_area();
	var callAs = (callAs != null && callAs != 'undefined') ? callAs : '';
	var menuKey = menuKey;
	var request_ajax_obj3 = new Ajax_Objects(file_path + 'MenuHwnd.php','GET','c=RemoveToCart&k=' + menuKey + '&x=' + callAs,true,'MenuAddToCart');
	request_ajax_obj3.Ajax_Call_Function();
}

function OrderView(){
	block_area();
	var request_ajax_obj4 = new Ajax_Objects(file_path + 'MenuHwnd.php','GET','c=ViewCart',true,'MenuAddToCart');
	request_ajax_obj4.Ajax_Call_Function();
}

function callValueSetJavascript(idIs,ValueSet,curObj){
	block_area();
	var DivObj = curObj.parentNode;
	var DivId = curObj.id + '_sub_option_div';
	var DivIdDivElm = DivObj.getElementsByTagName('div');
	for(i = 0;i < DivIdDivElm.length;i++){
		if(DivIdDivElm[i].id == DivId){
			DivIdDivElm[i].style.display = 'block';
		}else{
			DivIdDivElm[i].style.display = 'none';
			var inputElmn = DivIdDivElm[i].getElementsByTagName('input');
			for(k = 0;k < inputElmn.length;k++){
				if(inputElmn[k].type == 'radio'){
					inputElmn[k].checked =  false;
				}
			}
		}
	}
	var elem = document.getElementById(idIs);
	if(elem != null && elem != 'undefined' && (parseInt(ValueSet) > 0)){
		elem.value = ValueSet;
	}
	remove_area_blocker();
}

function checkBoxControl(obj,valueIs,setObj){
	var SpanObj = obj.parentNode.getElementsByTagName('span')[0];
	var DivObj = obj.parentNode.getElementsByTagName('div')[0];
	var CheckBarObj = obj.parentNode.parentNode;
	var tmpVlu = parseInt(valueIs);
	var valueIs = (valueIs > tmpVlu) ? parseFloat(valueIs) : ((tmpVlu == valueIs) ? tmpVlu : (valueIs * 1));
	var currentValue = parseFloat(document.getElementById(setObj).value);
	if(obj.checked == true){
		var vlu = currentValue + valueIs;
		document.getElementById(setObj).value = vlu;
		var chkCunt = 0;
		if(CheckBarObj != null && CheckBarObj != 'undefined' && CheckBarObj.tagName.toLowerCase() == 'div'){
			var elms = CheckBarObj.getElementsByTagName('input');
			for(j = 0;j < elms.length;j++){
				elms[j].checked ? ++chkCunt : '';
			}
		}
		if(chkCunt > 2){
			alert("You can only choose two items.");
			obj.checked = false;
			return;
		}
		
		if(valueIs > 0){
			SpanObj.innerHTML = ' (Add extra ' + valueIs + ') ';
		}
		if(DivObj != null && DivObj != 'undefined'){
			DivObj.style.display = 'block';
		}
	}else if(obj.checked == false){
		var vlu = currentValue - valueIs;
		vlu = (vlu == 1.7763568394002505e-15) ? 0 : vlu;
		document.getElementById(setObj).value = vlu;
		SpanObj.innerHTML = '';
		if(DivObj != null && DivObj != 'undefined'){
			DivObj.style.display = 'none';
			var getInputs = DivObj.getElementsByTagName('input');
			j = 0;
			for(j = 0;j < getInputs.length;j++){
				if(getInputs[j].type == 'checkbox'){
					getInputs[j].checked = false;
				}
			}
		}
	}
}

function formOptionGroupCheck(form_id){
	//Work Only With : select-one,text,textarea,radio,checkbox,hidden;
	var form_obj = document.getElementById(form_id);
	var form_obj_elements_length = form_obj.elements.length;
	
	var radioName = Array();
	var radioChkName = Array();
	var preOptionGroupName = '';
	
	for(i = 0;i < form_obj_elements_length;i++){
		var element_obj = form_obj.elements[i];
		var element_type = element_obj.type;
		var element_id = element_obj.id;
		var element_name = element_obj.name;
		var element_value = element_obj.value;
		if(element_obj.parentNode.id == '' || element_obj.parentNode.id == 'undefined'){
			switch(element_type){
				case 'radio':
					var checkedIt = element_obj.checked;
					if(preOptionGroupName != element_name){
						radioName[radioName.length] = element_name;
					}
					if(checkedIt){
						radioChkName[radioChkName.length] = element_name;
					}
					preOptionGroupName = element_name;
				break;
			}
		}
	}
	if(radioName.length == radioChkName.length){
		return true;	
	}
	if(radioName.length == 1){
		alert("Please chose at least an option.");	
	}else{
		alert("Please chose at least an option form each option group.");	
	}
	return false;
}

function maxLenCheck(obj){
	var valueIS = obj.value;
	if(valueIS.length > 100){
		alert("Special Instructions area is not more than 100 characters.");
		obj.value = String.substring(valueIS,0,100);
	}
}
