// Create boolean variable to check for a valid Internet Explorer instance.
var xmlhttp = false;

// Check if we are using IE
try {
	// If the javascript version is greater than 5.
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	//alert("You are using Microsoft Internet Explorer.");
} catch(e) {
	// if not, then use the older active x object.
	try {
		// if we are using IE
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		//alert("You are using Microsoft Internet Explorer");
	} catch(e) {
		// else we must be using a non ie browser
		xmlhttp = false;
	}
}

// If we are using a non-ie browser, create a javascript instance of the object
if(!xmlhttp && typeof XMLHttpRequest != 'undefined') {
	xmlhttp = new XMLHttpRequest();
	//alert("You are not using Microsoft Internet Explorer");
}

function vieworderdetails(orderid) {
	if(document.getElementById(orderid).className == 'showtable') {
		document.getElementById(orderid).className = 'hidetable';
	} else {
		document.getElementById(orderid).className = 'showtable';
	}
}

function changeRowColor(colorSet,rowid) {
	rowid = rowid + '_row';
	document.getElementById(rowid).style.backgroundColor = colorSet;
}

function makeorderstatuschange(sitename,status,ordernumber,emailstatus,selected) {
	emailstatus = document.getElementById(emailstatus).value;
	var unDef;
	var value='';
	//alert(emailstatus);
	var eleSel=document.getElementById(ordernumber+'_'+sitename+'_orderstatus');
	if(eleSel!=unDef || eleSel!=null && (selected!=unDef || selected!=null))
		value=selected;
	//alert(value);	
		
	var eleCb=document.getElementById("vp_access_"+ordernumber+"_"+sitename);
	if(!eleCb.checked && status=='C')
	{
		alert( "You can't complete this order at the moment.  Please make sure the VP box is checked before trying to clear this order.");
		if(eleSel!=unDef || eleSel!=null && (selected!=unDef || selected!=null))
			eleSel.value=value;
		return false;
	}	

	if(emailstatus == 'Y') {
		answer = confirm("Are You Sure You Want to Send the Email Notification?");
		if(answer) {
			//alert('Email Sent');
		} else {
			//alert('Email Not Sent');
			emailstatus = 'N';
		}
	}
	xmlhttp.open("GET", "ajax/changeorderstatus.ajax.php?sitename=" + sitename + "&ordernumber=" + ordernumber + "&newstatus=" + status + "&emailstatus=" + emailstatus);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			//alert(xmlhttp.responseText);
		}
	}
	xmlhttp.send(null);

}
function makeorderstatuschange_invoice(sitename,status,ordernumber,emailstatus) {
	emailstatus = document.getElementById(emailstatus).value;
	//alert(emailstatus);
	if(emailstatus == 'Y') {
		answer = confirm("Are You Sure You Want to Send the Email Notification?");
		if(answer) {
			//alert('Email Sent');
		} else {
			//alert('Email Not Sent');
			emailstatus = 'N';
		}
	}
	xmlhttp.open("GET", "ajax/changeorderstatus.ajax.php?sitename=" + sitename + "&ordernumber=" + ordernumber + "&newstatus=" + status + "&emailstatus=" + emailstatus);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			alert(xmlhttp.responseText);
		}
	}
	xmlhttp.send(null);
}


function invoiceprint(sitename,status,ordernumber) {
	emailstatus = 'N';
	var url="printinvoice.php?sitename=" + sitename + "&ordernumber=" + ordernumber + "&newstatus=" + status;
	var Wname='Invoice',w=800, h=600,bresizable=true,scrollbar='no',statusbar='no';
	
	WindowObjectReference = window.open(url,
   Wname,
   "fullscreen=yes," + (bresizable?'resizable':'') + ",scrollbars=" + scrollbar +",status=" + statusbar);
	WindowObjectReference.moveTo(0,0);

}

function updatetrackingnumbers(siteid,ordernumber,trackingtype,trackingvalue) {
	xmlhttp.open("GET", "ajax/updatetrackingnumbers.ajax.php?siteid=" + siteid + "&ordernumber=" + ordernumber + "&trackingtype=" + trackingtype + "&trackingvalue=" + trackingvalue);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			xmlhttp.responseText;
		}
	}
	xmlhttp.send(null);
}

function updatetrackingnumbers_btn(siteid,ordernumber,trackingtype,trackingvalue, btnid) {
	xmlhttp.open("GET", "ajax/updatetrackingnumbers.ajax.php?siteid=" + siteid + "&ordernumber=" + ordernumber + "&trackingtype=" + trackingtype + "&trackingvalue=" + trackingvalue);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			xmlhttp.responseText;
			$('#'+btnid).attr('src', '/images/checkmark_sm.png');
		}
	}
	xmlhttp.send(null);
}
function sendvendoremail(siteid,ordernumber,vendoremail) {
	vendoremail = document.getElementById(vendoremail).value;

	xmlhttp.open("GET", "ajax/sendvendoremail.ajax.php?siteid=" + siteid + "&ordernumber=" + ordernumber + "&vendoremail=" + vendoremail);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			alert(xmlhttp.responseText);
		}
	}
	xmlhttp.send(null);
}
function ShowHideExternalComment(id,linkele)
{
	var textarea_id="#div_extcomment_"+id;
	$(textarea_id).slideToggle();
	document.getElementById("send_email_extcomments_"+id).checked=true;

}
function updatecomments(siteid,ordernumber,commentcolumn,commentvalue) {
	xmlhttp.open("GET", "ajax/updatecomments.ajax.php?siteid=" + siteid + "&ordernumber=" + ordernumber + "&commentcolumn=" + commentcolumn + "&commentvalue=" + commentvalue);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			xmlhttp.responseText;
		}
	}
	xmlhttp.send(null);
}
function updatecomments_internaljquery(siteid,ordernumber,commentcolumn,fieldid) {
	var commentvalue = $('#'+fieldid).val();
	xmlhttp.open("GET", "ajax/updatecomments.ajax.php?siteid=" + siteid + "&ordernumber=" + ordernumber + "&commentcolumn=" + commentcolumn + "&commentvalue=" + commentvalue);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			xmlhttp.responseText;
			$('#'+fieldid).siblings('input[type=image]').attr('src', '/images/checkmark_sm.png');
		}
	}
	xmlhttp.send(null);
}
function updatecomments_new(siteid,ordernumber) {
	var textarea_id="#extcomment_"+ordernumber+"_"+siteid;
	var checkbox_id="send_email_extcomments_"+ordernumber+"_"+siteid;
	var eleCheckBox=document.getElementById(checkbox_id);
	commentvalue=$(textarea_id).val();
	var isEmailChecked=eleCheckBox.checked;
	var process=true;
	if(isEmailChecked)
	{
		if(!confirm('Are you sure you want to email your response to client?'))
		{
			process=false;
			var textarea_id="#div_extcomment_"+ordernumber+"_"+siteid;
			$(textarea_id).slideUp();
		}
	}
	if(process)
	{
		var myurl ="ajax/updatecomments.ajax_new.php";
		//alert(url);
		$.ajax({
			url: myurl,
			dataType: 'html',
			type: 'POST',
			data: {"siteid":siteid,"ordernumber":ordernumber,"commentvalue":commentvalue,"send_email":eleCheckBox.checked},
			async: false,
			success: function(html){
				//alert(html);
				eval(html);
				//eval(html);
			}
		});
	}
}
function SendExternalCommentEmail(site_id,order_id)
{
	if(confirm('Are you sure you want to email your response to client again?'))
	{
	var myurl ="ajax/ajax_common.php?site_id="+site_id+"&order_id="+order_id+"&action=SendExternalCommentEmail";
	//alert(myurl);
	$.ajax({
		url: myurl,
		dataType: 'html',

		async: false,
		success: function(html){
			//alert(html);
			eval(html);
			//eval(html);
		}
	})	
	}
}
function decryptdata(siteid,spanid,decryptedvalue) {
	showinfo = document.getElementById(spanid);
	
	xmlhttp.open("GET", "ajax/decryptdata.ajax.php?siteid=" + siteid + "&decryptedvalue=" + URLEncode(decryptedvalue));
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			//alert(xmlhttp.responseText);
			showinfo.innerHTML = xmlhttp.responseText;
		}
	}
	xmlhttp.send(null);
}
function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

function switchSiteforOrders(showorderstatusdrop, siteDropDown,grp_ids) {
	//statusid = $("#showorderstatusdrop").val();
	statusid = showorderstatusdrop;
	//val=$("#siteDropDown").val();
	val=siteDropDown; 
	var unDef;
	if(statusid == '') {
		document.location.href = 'manageorders.php?siteid=' + val +(grp_ids!='' || grp_ids!=unDef ?'&user_group='+grp_ids:'');
	} else {
		document.location.href = 'manageorders.php?siteid=' + val  + '&status=' + statusid +(grp_ids!=''  || grp_ids!=unDef?'&user_group='+grp_ids:'');
	}
}
function getsites(f)
{
	var strSites='';
	for(i=0;i<f.siteDropDown.length;i++)
	{
		if(f.siteDropDown[i].checked)
			strSites += f.siteDropDown[i].value+",";
	}
	strSites = strSites.substring(0,strSites.length-1);
	//alert(strSites);
	return strSites;
}
function getstatus(f)
{
	var strStatus='';
	for(i=0;i<f.showorderstatusdrop.length;i++)
	{
		if(f.showorderstatusdrop[i].checked)
			strStatus += f.showorderstatusdrop[i].value+",";
	}
	strStatus = strStatus.substring(0,strStatus.length-1);
	//alert(strStatus);
	return strStatus;
}
function switchSiteforOrderStatus(siteid,statusSet) {
	siteid = document.getElementById(siteid).value;
	if(siteid == 'ALL') {
		document.location.href = 'manageorders.php?siteid=' + siteid + '&status=' + statusSet;
	} else {
		document.location.href = 'manageorders.php?siteid=' + siteid  + '&status=' + statusSet;
	}
}
function debug(txt)
{
	$("#debugWindow").show('slow');
	$("#debugWindow").html($("#debugWindow").html()+"\n"+txt);
}
function confirmprogress(msg) {
	answer = confirm(msg);
	if(answer) {
		return true;
	} else {
		return false;
	}
}






/*
  -------------------------------------------------------------------------
		      JavaScript Form Validator (gen_validatorv31.js)
              Version 3.1.2
	Copyright (C) 2003-2008 JavaScript-Coder.com. All rights reserved.
	You can freely use this script in your Web pages.
	You may adapt this script for your own needs, provided these opening credit
    lines are kept intact.
		
	The Form validation script is distributed free from JavaScript-Coder.com
	For updates, please visit:
	http://www.javascript-coder.com/html-form/javascript-form-validation.phtml
	
	Questions & comments please send to form.val at javascript-coder.com
  -------------------------------------------------------------------------  
*/
function Validator(frmname)
{
  this.formobj=document.forms[frmname];
	if(!this.formobj)
	{
	  alert("Error: couldnot get Form object "+frmname);
		return;
	}
	if(this.formobj.onsubmit)
	{
	 this.formobj.old_onsubmit = this.formobj.onsubmit;
	 this.formobj.onsubmit=null;
	}
	else
	{
	 this.formobj.old_onsubmit = null;
	}
	this.formobj._sfm_form_name=frmname;
	this.formobj.onsubmit=form_submit_handler;
	this.addValidation = add_validation;
	this.setAddnlValidationFunction=set_addnl_vfunction;
	this.clearAllValidations = clear_all_validations;
    this.disable_validations = false;//new
    document.error_disp_handler = new sfm_ErrorDisplayHandler();
    this.EnableOnPageErrorDisplay=validator_enable_OPED;
	this.EnableOnPageErrorDisplaySingleBox=validator_enable_OPED_SB;
    this.show_errors_together=true;
    this.EnableMsgsTogether=sfm_enable_show_msgs_together;
    document.set_focus_onerror=true;
    this.EnableFocusOnError=sfm_validator_enable_focus;

}

function sfm_validator_enable_focus(enable)
{
    document.set_focus_onerror = enable;
}

function set_addnl_vfunction(functionname)
{
  this.formobj.addnlvalidation = functionname;
}

function sfm_set_focus(objInput)
{
    if(document.set_focus_onerror)
    {
        objInput.focus();
    }
}

function sfm_enable_show_msgs_together()
{
    this.show_errors_together=true;
    this.formobj.show_errors_together=true;
}
function clear_all_validations()
{
	for(var itr=0;itr < this.formobj.elements.length;itr++)
	{
		this.formobj.elements[itr].validationset = null;
	}
}

function form_submit_handler()
{
   var bRet = true;
    document.error_disp_handler.clear_msgs();
	for(var itr=0;itr < this.elements.length;itr++)
	{
		if(this.elements[itr].validationset &&
	   !this.elements[itr].validationset.validate())
		{
		  bRet = false;
		}
        if(!bRet && !this.show_errors_together)
        {
          break;

        }
	}

	if(this.addnlvalidation)
	{
	  str =" var ret = "+this.addnlvalidation+"()";
	  eval(str);

     if(!ret) 
     {
       bRet=false; 
     }

	}

   if(!bRet)
    {
      document.error_disp_handler.FinalShowMsg();
      return false;
    }
	return true;
}

function add_validation(itemname,descriptor,errstr)
{
	var condition = null;
	if(arguments.length > 3)
	{
	 condition = arguments[3]; 
	}
  if(!this.formobj)
	{
		alert("Error: The form object is not set properly");
		return;
	}//if
	var itemobj = this.formobj[itemname];
    if(itemobj.length && isNaN(itemobj.selectedIndex) )
    //for radio button; don't do for 'select' item
	{
		itemobj = itemobj[0];
	}	
  if(!itemobj)
	{
		alert("Error: Couldnot get the input object named: "+itemname);
		return;
	}
	if(!itemobj.validationset)
	{
		itemobj.validationset = new ValidationSet(itemobj,this.show_errors_together);
	}
	itemobj.validationset.add(descriptor,errstr,condition);
    itemobj.validatorobj=this;
}
function validator_enable_OPED()
{
    document.error_disp_handler.EnableOnPageDisplay(false);
}

function validator_enable_OPED_SB()
{
	document.error_disp_handler.EnableOnPageDisplay(true);
}
function sfm_ErrorDisplayHandler()
{
  this.msgdisplay = new AlertMsgDisplayer();
  this.EnableOnPageDisplay= edh_EnableOnPageDisplay;
  this.ShowMsg=edh_ShowMsg;
  this.FinalShowMsg=edh_FinalShowMsg;
  this.all_msgs=new Array();
  this.clear_msgs=edh_clear_msgs;
}
function edh_clear_msgs()
{
    this.msgdisplay.clearmsg(this.all_msgs);
    this.all_msgs = new Array();
}
function edh_FinalShowMsg()
{
    this.msgdisplay.showmsg(this.all_msgs);
}
function edh_EnableOnPageDisplay(single_box)
{
	if(true == single_box)
	{
		this.msgdisplay = new SingleBoxErrorDisplay();
	}
	else
	{
		this.msgdisplay = new DivMsgDisplayer();		
	}
}
function edh_ShowMsg(msg,input_element)
{
	
   var objmsg = new Array();
   objmsg["input_element"] = input_element;
   objmsg["msg"] =  msg;
   this.all_msgs.push(objmsg);
}
function AlertMsgDisplayer()
{
  this.showmsg = alert_showmsg;
  this.clearmsg=alert_clearmsg;
}
function alert_clearmsg(msgs)
{

}
function alert_showmsg(msgs)
{
    var whole_msg="";
    var first_elmnt=null;
    for(var m=0;m < msgs.length;m++)
    {
        if(null == first_elmnt)
        {
            first_elmnt = msgs[m]["input_element"];
        }
        whole_msg += msgs[m]["msg"] + "\n";
    }
	
    alert(whole_msg);

    if(null != first_elmnt)
    {
        sfm_set_focus(first_elmnt);
    }
}
function sfm_show_error_msg(msg,input_elmt)
{
    document.error_disp_handler.ShowMsg(msg,input_elmt);
}
function SingleBoxErrorDisplay()
{
 this.showmsg=sb_div_showmsg;
 this.clearmsg=sb_div_clearmsg;
}

function sb_div_clearmsg(msgs)
{
	var divname = form_error_div_name(msgs);
	show_div_msg(divname,"");
}

function sb_div_showmsg(msgs)
{
	var whole_msg="<ul>\n";
	for(var m=0;m < msgs.length;m++)
    {
        whole_msg += "<li>" + msgs[m]["msg"] + "</li>\n";
    }
	whole_msg += "</ul>";
	var divname = form_error_div_name(msgs);
	show_div_msg(divname,whole_msg);
}
function form_error_div_name(msgs)
{
	var input_element= null;

	for(var m in msgs)
	{
	 input_element = msgs[m]["input_element"];
	 if(input_element){break;}
	}

	var divname ="";
	if(input_element)
	{
	 divname = input_element.form._sfm_form_name + "_errorloc";
	}

	return divname;
}
function DivMsgDisplayer()
{
 this.showmsg=div_showmsg;
 this.clearmsg=div_clearmsg;
}
function div_clearmsg(msgs)
{
    for(var m in msgs)
    {
        var divname = element_div_name(msgs[m]["input_element"]);
        show_div_msg(divname,"");
    }
}
function element_div_name(input_element)
{
  var divname = input_element.form._sfm_form_name + "_" + 
                   input_element.name + "_errorloc";

  divname = divname.replace(/[\[\]]/gi,"");

  return divname;
}
function div_showmsg(msgs)
{
    var whole_msg;
    var first_elmnt=null;
    for(var m in msgs)
    {
        if(null == first_elmnt)
        {
            first_elmnt = msgs[m]["input_element"];
        }
        var divname = element_div_name(msgs[m]["input_element"]);
        show_div_msg(divname,msgs[m]["msg"]);
    }
    if(null != first_elmnt)
    {
        sfm_set_focus(first_elmnt);
    }
}
function show_div_msg(divname,msgstring)
{
	if(divname.length<=0) return false;

	if(document.layers)
	{
		divlayer = document.layers[divname];
        if(!divlayer){return;}
		divlayer.document.open();
		divlayer.document.write(msgstring);
		divlayer.document.close();
	}
	else
	if(document.all)
	{
		divlayer = document.all[divname];
        if(!divlayer){return;}
		divlayer.innerHTML=msgstring;
	}
	else
	if(document.getElementById)
	{
		divlayer = document.getElementById(divname);
        if(!divlayer){return;}
		divlayer.innerHTML =msgstring;
	}
	divlayer.style.visibility="visible";	
}

function ValidationDesc(inputitem,desc,error,condition)
{
  this.desc=desc;
	this.error=error;
	this.itemobj = inputitem;
	this.condition = condition;
	this.validate=vdesc_validate;
}
function vdesc_validate()
{
	if(this.condition != null )
	{
		if(!eval(this.condition))
		{
			return true;
		}
	}
	if(!validateInput(this.desc,this.itemobj,this.error))
	{
		this.itemobj.validatorobj.disable_validations=true;

		sfm_set_focus(this.itemobj);

		return false;
	}
	return true;
}
function ValidationSet(inputitem,msgs_together)
{
    this.vSet=new Array();
	this.add= add_validationdesc;
	this.validate= vset_validate;
	this.itemobj = inputitem;
    this.msgs_together = msgs_together;
}
function add_validationdesc(desc,error,condition)
{
  this.vSet[this.vSet.length]= 
  new ValidationDesc(this.itemobj,desc,error,condition);
}
function vset_validate()
{
    var bRet = true;
    for(var itr=0;itr<this.vSet.length;itr++)
    {
        bRet = bRet && this.vSet[itr].validate();
        if(!bRet && !this.msgs_together)
        {
            break;
        }
    }
    return bRet;
}
function validateEmail(email)
{
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}

function IsCheckSelected(objValue,chkValue)
{
    var selected=false;
	var objcheck = objValue.form.elements[objValue.name];
    if(objcheck.length)
	{
		var idxchk=-1;
		for(var c=0;c < objcheck.length;c++)
		{
		   if(objcheck[c].value == chkValue)
		   {
		     idxchk=c;
			 break;
		   }//if
		}//for
		if(idxchk>= 0)
		{
		  if(objcheck[idxchk].checked=="1")
		  {
		    selected=true;
		  }
		}//if
	}
	else
	{
		if(objValue.checked == "1")
		{
			selected=true;
		}//if
	}//else	

	return selected;
}
function TestDontSelectChk(objValue,chkValue,strError)
{
	var pass = true;
	pass = IsCheckSelected(objValue,chkValue)?false:true;

	if(pass==false)
	{
     if(!strError || strError.length ==0) 
        { 
        	strError = "Can't Proceed as you selected "+objValue.name;  
        }//if			  
	  sfm_show_error_msg(strError,objValue);
	  
	}
    return pass;
}
function TestShouldSelectChk(objValue,chkValue,strError)
{
	var pass = true;

	pass = IsCheckSelected(objValue,chkValue)?true:false;

	if(pass==false)
	{
     if(!strError || strError.length ==0) 
        { 
        	strError = "You should select "+objValue.name;  
        }//if			  
	  sfm_show_error_msg(strError,objValue);
	  
	}
    return pass;
}
function TestRequiredInput(objValue,strError)
{
 var ret = true;
 var val = objValue.value;
 val = val.replace(/^\s+|\s+$/g,"");//trim
    if(eval(val.length) == 0) 
    { 
       if(!strError || strError.length ==0) 
       { 
         strError = objValue.name + " : Required Field"; 
       }//if 
       sfm_show_error_msg(strError,objValue); 
       ret=false; 
    }//if 
return ret;
}
function TestMaxLen(objValue,strMaxLen,strError)
{
 var ret = true;
    if(eval(objValue.value.length) > eval(strMaxLen)) 
    { 
      if(!strError || strError.length ==0) 
      { 
        strError = objValue.name + " : "+ strMaxLen +" characters maximum "; 
      }//if 
      sfm_show_error_msg(strError,objValue); 
      ret = false; 
    }//if 
return ret;
}
function TestMinLen(objValue,strMinLen,strError)
{
 var ret = true;
    if(eval(objValue.value.length) <  eval(strMinLen)) 
    { 
      if(!strError || strError.length ==0) 
      { 
        strError = objValue.name + " : " + strMinLen + " characters minimum  "; 
      }//if               
      sfm_show_error_msg(strError,objValue); 
      ret = false;   
    }//if 
return ret;
}
function TestInputType(objValue,strRegExp,strError,strDefaultError)
{
   var ret = true;

    var charpos = objValue.value.search(strRegExp); 
    if(objValue.value.length > 0 &&  charpos >= 0) 
    { 
     if(!strError || strError.length ==0) 
      { 
        strError = strDefaultError;
      }//if 
      sfm_show_error_msg(strError,objValue); 
      ret = false; 
    }//if 
 return ret;
}
function TestEmail(objValue,strError)
{
var ret = true;
     if(objValue.value.length > 0 && !validateEmail(objValue.value)	 ) 
     { 
       if(!strError || strError.length ==0) 
       { 
          strError = objValue.name+": Enter a valid Email address "; 
       }//if                                               
       sfm_show_error_msg(strError,objValue); 
       ret = false; 
     }//if 
return ret;
}
function TestLessThan(objValue,strLessThan,strError)
{
var ret = true;
	  if(isNaN(objValue.value)) 
	  { 
	    sfm_show_error_msg(objValue.name +": Should be a number ",objValue); 
	    ret = false; 
	  }//if 
	  else
	  if(eval(objValue.value) >=  eval(strLessThan)) 
	  { 
	    if(!strError || strError.length ==0) 
	    { 
	      strError = objValue.name + " : value should be less than "+ strLessThan; 
	    }//if               
	    sfm_show_error_msg(strError,objValue); 
	    ret = false;                 
	   }//if   
return ret;          
}
function TestGreaterThan(objValue,strGreaterThan,strError)
{
var ret = true;
     if(isNaN(objValue.value)) 
     { 
       sfm_show_error_msg(objValue.name+": Should be a number ",objValue); 
       ret = false; 
     }//if 
	 else
     if(eval(objValue.value) <=  eval(strGreaterThan)) 
      { 
        if(!strError || strError.length ==0) 
        { 
          strError = objValue.name + " : value should be greater than "+ strGreaterThan; 
        }//if               
        sfm_show_error_msg(strError,objValue);  
        ret = false;
      }//if  
return ret;           
}
function TestRegExp(objValue,strRegExp,strError)
{
var ret = true;
    if( objValue.value.length > 0 && 
        !objValue.value.match(strRegExp) ) 
    { 
      if(!strError || strError.length ==0) 
      { 
        strError = objValue.name+": Invalid characters found "; 
      }//if                                                               
      sfm_show_error_msg(strError,objValue); 
      ret = false;                   
    }//if 
return ret;
}
function TestDontSelect(objValue,dont_sel_index,strError)
{
var ret = true;
    if(objValue.selectedIndex == null) 
    { 
      sfm_show_error_msg("ERROR: dontselect command for non-select Item"); 
      ret =  false; 
    } 
    if(objValue.selectedIndex == eval(dont_sel_index)) 
    { 
     if(!strError || strError.length ==0) 
      { 
      strError = objValue.name+": Please Select one option "; 
      }//if                                                               
      sfm_show_error_msg(strError,objValue); 
      ret =  false;                                   
     } 
return ret;
}
function TestSelectOneRadio(objValue,strError)
{
	var objradio = objValue.form.elements[objValue.name];
	var one_selected=false;
	for(var r=0;r < objradio.length;r++)
	{
	  if(objradio[r].checked)
	  {
	  	one_selected=true;
		break;
	  }
	}
	if(false == one_selected)
	{
      if(!strError || strError.length ==0) 
       {
	    strError = "Please select one option from "+objValue.name;
	   }	
	  sfm_show_error_msg(strError,objValue);
	}
return one_selected;
}

function validateInput(strValidateStr,objValue,strError) 
{ 
    var ret = true;
    var epos = strValidateStr.search("="); 
    var  command  = ""; 
    var  cmdvalue = ""; 
    if(epos >= 0) 
    { 
     command  = strValidateStr.substring(0,epos); 
     cmdvalue = strValidateStr.substr(epos+1); 
    } 
    else 
    { 
     command = strValidateStr; 
    } 
    switch(command) 
    { 
        case "req": 
        case "required": 
         { 
		   ret = TestRequiredInput(objValue,strError)
           break;             
         }//case required 
        case "maxlength": 
        case "maxlen": 
          { 
			 ret = TestMaxLen(objValue,cmdvalue,strError)
             break; 
          }//case maxlen 
        case "minlength": 
        case "minlen": 
           { 
			 ret = TestMinLen(objValue,cmdvalue,strError)
             break; 
            }//case minlen 
        case "alnum": 
        case "alphanumeric": 
           { 
				ret = TestInputType(objValue,"[^A-Za-z0-9]",strError, 
						objValue.name+": Only alpha-numeric characters allowed ");
				break; 
           }
        case "alnum_s": 
        case "alphanumeric_space": 
           { 
				ret = TestInputType(objValue,"[^A-Za-z0-9\\s]",strError, 
						objValue.name+": Only alpha-numeric characters and space allowed ");
				break; 
           }		   
        case "num": 
        case "numeric": 
           { 
                ret = TestInputType(objValue,"[^0-9]",strError, 
						objValue.name+": Only digits allowed ");
                break;               
           }
        case "dec": 
        case "decimal": 
           { 
                ret = TestInputType(objValue,"[^0-9\.]",strError, 
						objValue.name+": Only numbers allowed ");
                break;               
           }
        case "alphabetic": 
        case "alpha": 
           { 
                ret = TestInputType(objValue,"[^A-Za-z]",strError, 
						objValue.name+": Only alphabetic characters allowed ");
                break; 
           }
        case "alphabetic_space": 
        case "alpha_s": 
           { 
                ret = TestInputType(objValue,"[^A-Za-z\\s]",strError, 
						objValue.name+": Only alphabetic characters and space allowed ");
                break; 
           }
        case "email": 
          { 
			   ret = TestEmail(objValue,strError);
               break; 
          }
        case "lt": 
        case "lessthan": 
         { 
    	      ret = TestLessThan(objValue,cmdvalue,strError);
              break; 
         }
        case "gt": 
        case "greaterthan": 
         { 
			ret = TestGreaterThan(objValue,cmdvalue,strError);
            break; 
         }//case greaterthan 
        case "regexp": 
         { 
			ret = TestRegExp(objValue,cmdvalue,strError);
           break; 
         }
        case "dontselect": 
         { 
			 ret = TestDontSelect(objValue,cmdvalue,strError)
             break; 
         }
		case "dontselectchk":
		{
			ret = TestDontSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "shouldselchk":
		{
			ret = TestShouldSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "selone_radio":
		{
			ret = TestSelectOneRadio(objValue,strError);
		    break;
		}		 
    }//switch 
	return ret;
}
function VWZ_IsListItemSelected(listname,value)
{
 for(var i=0;i < listname.options.length;i++)
 {
  if(listname.options[i].selected == true &&
   listname.options[i].value == value) 
   {
     return true;
   }
 }
 return false;
}
function VWZ_IsChecked(objcheck,value)
{
 if(objcheck.length)
 {
     for(var c=0;c < objcheck.length;c++)
     {
       if(objcheck[c].checked == "1" && 
	     objcheck[c].value == value)
       {
        return true; 
       }
     }
 }
 else
 {
  if(objcheck.checked == "1" )
   {
    return true; 
   }    
 }
 return false;
}
/*
	Copyright (C) 2003-2009 JavaScript-Coder.com . All rights reserved.
*/



/***********************************************
 Fool-Proof Date Input Script with DHTML Calendar
 by Jason Moon - http://calendar.moonscript.com/dateinput.cfm
 ************************************************/

// Customizable variables
var DefaultDateFormat = 'MM/DD/YYYY'; // If no date format is supplied, this will be used instead
var HideWait = 3; // Number of seconds before the calendar will disappear
var Y2kPivotPoint = 76; // 2-digit years before this point will be created in the 21st century
var UnselectedMonthText = ''; // Text to display in the 1st month list item when the date isn't required
var FontSize = 11; // In pixels
var FontFamily = 'Tahoma';
var CellWidth = 18;
var CellHeight = 16;
var ImageURL = 'images/calendar.jpg';
var NextURL = 'images/next.gif';
var PrevURL = 'images/prev.gif';
var CalBGColor = 'white';
var TopRowBGColor = 'buttonface';
var DayBGColor = 'lightgrey';

// Global variables
var ZCounter = 100;
var Today = new Date();
var WeekDays = new Array('S','M','T','W','T','F','S');
var MonthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var MonthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

// Write out the stylesheet definition for the calendar
with (document) {
   writeln('<style>');
   writeln('td.calendarDateInput {letter-spacing:normal;line-height:normal;font-family:' + FontFamily + ',Sans-Serif;font-size:' + FontSize + 'px;}');
   writeln('select.calendarDateInput {letter-spacing:.06em;font-family:Verdana,Sans-Serif;font-size:11px;}');
   writeln('input.calendarDateInput {letter-spacing:.06em;font-family:Verdana,Sans-Serif;font-size:11px;}');
   writeln('</style>');
}

// Only allows certain keys to be used in the date field
function YearDigitsOnly(e) {
   var KeyCode = (e.keyCode) ? e.keyCode : e.which;
   return ((KeyCode == 8) // backspace
        || (KeyCode == 9) // tab
        || (KeyCode == 37) // left arrow
        || (KeyCode == 39) // right arrow
        || (KeyCode == 46) // delete
        || ((KeyCode > 47) && (KeyCode < 58)) // 0 - 9
   );
}

// Gets the absolute pixel position of the supplied element
function GetTagPixels(StartTag, Direction) {
   var PixelAmt = (Direction == 'LEFT') ? StartTag.offsetLeft : StartTag.offsetTop;
   while ((StartTag.tagName != 'BODY') && (StartTag.tagName != 'HTML')) {
      StartTag = StartTag.offsetParent;
      PixelAmt += (Direction == 'LEFT') ? StartTag.offsetLeft : StartTag.offsetTop;
   }
   return PixelAmt;
}

// Is the specified select-list behind the calendar?
function BehindCal(SelectList, CalLeftX, CalRightX, CalTopY, CalBottomY, ListTopY) {
   var ListLeftX = GetTagPixels(SelectList, 'LEFT');
   var ListRightX = ListLeftX + SelectList.offsetWidth;
   var ListBottomY = ListTopY + SelectList.offsetHeight;
   return (((ListTopY < CalBottomY) && (ListBottomY > CalTopY)) && ((ListLeftX < CalRightX) && (ListRightX > CalLeftX)));
}

// For IE, hides any select-lists that are behind the calendar
function FixSelectLists(Over) {
   if (navigator.appName == 'Microsoft Internet Explorer') {
      var CalDiv = this.getCalendar();
      var CalLeftX = CalDiv.offsetLeft;
      var CalRightX = CalLeftX + CalDiv.offsetWidth;
      var CalTopY = CalDiv.offsetTop;
      var CalBottomY = CalTopY + (CellHeight * 9);
      var FoundCalInput = false;
      formLoop :
      for (var j=this.formNumber;j<document.forms.length;j++) {
         for (var i=0;i<document.forms[j].elements.length;i++) {
            if (typeof document.forms[j].elements[i].type == 'string') {
               if ((document.forms[j].elements[i].type == 'hidden') && (document.forms[j].elements[i].name == this.hiddenFieldName)) {
                  FoundCalInput = true;
                  i += 3; // 3 elements between the 1st hidden field and the last year input field
               }
               if (FoundCalInput) {
                  if (document.forms[j].elements[i].type.substr(0,6) == 'select') {
                     ListTopY = GetTagPixels(document.forms[j].elements[i], 'TOP');
                     if (ListTopY < CalBottomY) {
                        if (BehindCal(document.forms[j].elements[i], CalLeftX, CalRightX, CalTopY, CalBottomY, ListTopY)) {
                           document.forms[j].elements[i].style.visibility = (Over) ? 'hidden' : 'visible';
                        }
                     }
                     else break formLoop;
                  }
               }
            }
         }
      }
   }
}

// Displays a message in the status bar when hovering over the calendar days
function DayCellHover(Cell, Over, Color, HoveredDay) {
   Cell.style.backgroundColor = (Over) ? DayBGColor : Color;
   if (Over) {
      if ((this.yearValue == Today.getFullYear()) && (this.monthIndex == Today.getMonth()) && (HoveredDay == Today.getDate())) self.status = 'Click to select today';
      else {
         var Suffix = HoveredDay.toString();
         switch (Suffix.substr(Suffix.length - 1, 1)) {
            case '1' : Suffix += (HoveredDay == 11) ? 'th' : 'st'; break;
            case '2' : Suffix += (HoveredDay == 12) ? 'th' : 'nd'; break;
            case '3' : Suffix += (HoveredDay == 13) ? 'th' : 'rd'; break;
            default : Suffix += 'th'; break;
         }
         self.status = 'Click to select ' + this.monthName + ' ' + Suffix;
      }
   }
   else self.status = '';
   return true;
}

// Sets the form elements after a day has been picked from the calendar
function PickDisplayDay(ClickedDay) {
   this.show();
   var MonthList = this.getMonthList();
   var DayList = this.getDayList();
   var YearField = this.getYearField();
   FixDayList(DayList, GetDayCount(this.displayed.yearValue, this.displayed.monthIndex));
   // Select the month and day in the lists
   for (var i=0;i<MonthList.length;i++) {
      if (MonthList.options[i].value == this.displayed.monthIndex) MonthList.options[i].selected = true;
   }
   for (var j=1;j<=DayList.length;j++) {
      if (j == ClickedDay) DayList.options[j-1].selected = true;
   }
   this.setPicked(this.displayed.yearValue, this.displayed.monthIndex, ClickedDay);
   // Change the year, if necessary
   YearField.value = this.picked.yearPad;
   YearField.defaultValue = YearField.value;
}

// Builds the HTML for the calendar days
function BuildCalendarDays() {
   var Rows = 5;
   if (((this.displayed.dayCount == 31) && (this.displayed.firstDay > 4)) || ((this.displayed.dayCount == 30) && (this.displayed.firstDay == 6))) Rows = 6;
   else if ((this.displayed.dayCount == 28) && (this.displayed.firstDay == 0)) Rows = 4;
   var HTML = '<table width="' + (CellWidth * 7) + '" cellspacing="0" cellpadding="1" style="cursor:default">';
   for (var j=0;j<Rows;j++) {
      HTML += '<tr>';
      for (var i=1;i<=7;i++) {
         Day = (j * 7) + (i - this.displayed.firstDay);
         if ((Day >= 1) && (Day <= this.displayed.dayCount)) {
            if ((this.displayed.yearValue == this.picked.yearValue) && (this.displayed.monthIndex == this.picked.monthIndex) && (Day == this.picked.day)) {
               TextStyle = 'color:white;font-weight:bold;'
               BackColor = DayBGColor;
            }
            else {
               TextStyle = 'color:black;'
               BackColor = CalBGColor;
            }
            if ((this.displayed.yearValue == Today.getFullYear()) && (this.displayed.monthIndex == Today.getMonth()) && (Day == Today.getDate())) TextStyle += 'border:1px solid darkred;padding:0px;';
            HTML += '<td align="center" class="calendarDateInput" style="cursor:default;height:' + CellHeight + ';width:' + CellWidth + ';' + TextStyle + ';background-color:' + BackColor + '" onClick="' + this.objName + '.pickDay(' + Day + ')" onMouseOver="return ' + this.objName + '.displayed.dayHover(this,true,\'' + BackColor + '\',' + Day + ')" onMouseOut="return ' + this.objName + '.displayed.dayHover(this,false,\'' + BackColor + '\')">' + Day + '</td>';
         }
         else HTML += '<td class="calendarDateInput" style="height:' + CellHeight + '">&nbsp;</td>';
      }
      HTML += '</tr>';
   }
   return HTML += '</table>';
}

// Determines which century to use (20th or 21st) when dealing with 2-digit years
function GetGoodYear(YearDigits) {
   if (YearDigits.length == 4) return YearDigits;
   else {
      var Millennium = (YearDigits < Y2kPivotPoint) ? 2000 : 1900;
      return Millennium + parseInt(YearDigits,10);
   }
}

// Returns the number of days in a month (handles leap-years)
function GetDayCount(SomeYear, SomeMonth) {
   return ((SomeMonth == 1) && ((SomeYear % 400 == 0) || ((SomeYear % 4 == 0) && (SomeYear % 100 != 0)))) ? 29 : MonthDays[SomeMonth];
}

// Highlights the buttons
function VirtualButton(Cell, ButtonDown) {
   if (ButtonDown) {
      Cell.style.borderLeft = 'buttonshadow 1px solid';
      Cell.style.borderTop = 'buttonshadow 1px solid';
      Cell.style.borderBottom = 'buttonhighlight 1px solid';
      Cell.style.borderRight = 'buttonhighlight 1px solid';
   }
   else {
      Cell.style.borderLeft = 'buttonhighlight 1px solid';
      Cell.style.borderTop = 'buttonhighlight 1px solid';
      Cell.style.borderBottom = 'buttonshadow 1px solid';
      Cell.style.borderRight = 'buttonshadow 1px solid';
   }
}

// Mouse-over for the previous/next month buttons
function NeighborHover(Cell, Over, DateObj) {
   if (Over) {
      VirtualButton(Cell, false);
      self.status = 'Click to view ' + DateObj.fullName;
   }
   else {
      Cell.style.border = 'buttonface 1px solid';
      self.status = '';
   }
   return true;
}

// Adds/removes days from the day list, depending on the month/year
function FixDayList(DayList, NewDays) {
   var DayPick = DayList.selectedIndex + 1;
   if (NewDays != DayList.length) {
      var OldSize = DayList.length;
      for (var k=Math.min(NewDays,OldSize);k<Math.max(NewDays,OldSize);k++) {
         (k >= NewDays) ? DayList.options[NewDays] = null : DayList.options[k] = new Option(k+1, k+1);
      }
      DayPick = Math.min(DayPick, NewDays);
      DayList.options[DayPick-1].selected = true;
   }
   return DayPick;
}

// Resets the year to its previous valid value when something invalid is entered
function FixYearInput(YearField) {
   var YearRE = new RegExp('\\d{' + YearField.defaultValue.length + '}');
   if (!YearRE.test(YearField.value)) YearField.value = YearField.defaultValue;
}

// Displays a message in the status bar when hovering over the calendar icon
function CalIconHover(Over) {
   var Message = (this.isShowing()) ? 'hide' : 'show';
   self.status = (Over) ? 'Click to ' + Message + ' the calendar' : '';
   return true;
}

// Starts the timer over from scratch
function CalTimerReset() {
   eval('clearTimeout(' + this.timerID + ')');
   eval(this.timerID + '=setTimeout(\'' + this.objName + '.show()\',' + (HideWait * 1000) + ')');
}

// The timer for the calendar
function DoTimer(CancelTimer) {
   if (CancelTimer) eval('clearTimeout(' + this.timerID + ')');
   else {
      eval(this.timerID + '=null');
      this.resetTimer();
   }
}

// Show or hide the calendar
function ShowCalendar() {
   if (this.isShowing()) {
      var StopTimer = true;
      this.getCalendar().style.zIndex = --ZCounter;
      this.getCalendar().style.visibility = 'hidden';
      this.fixSelects(false);
   }
   else {
      var StopTimer = false;
      this.fixSelects(true);
      this.getCalendar().style.zIndex = ++ZCounter;
      this.getCalendar().style.visibility = 'visible';
   }
   this.handleTimer(StopTimer);
   self.status = '';
}

// Hides the input elements when the "blank" month is selected
function SetElementStatus(Hide) {
   this.getDayList().style.visibility = (Hide) ? 'hidden' : 'visible';
   this.getYearField().style.visibility = (Hide) ? 'hidden' : 'visible';
   this.getCalendarLink().style.visibility = (Hide) ? 'hidden' : 'visible';
}

// Sets the date, based on the month selected
function CheckMonthChange(MonthList) {
   var DayList = this.getDayList();
   if (MonthList.options[MonthList.selectedIndex].value == '') {
      DayList.selectedIndex = 0;
      this.hideElements(true);
      this.setHidden('');
   }
   else {
      this.hideElements(false);
      if (this.isShowing()) {
         this.resetTimer(); // Gives the user more time to view the calendar with the newly-selected month
         this.getCalendar().style.zIndex = ++ZCounter; // Make sure this calendar is on top of any other calendars
      }
      var DayPick = FixDayList(DayList, GetDayCount(this.picked.yearValue, MonthList.options[MonthList.selectedIndex].value));
      this.setPicked(this.picked.yearValue, MonthList.options[MonthList.selectedIndex].value, DayPick);
   }
}

// Sets the date, based on the day selected
function CheckDayChange(DayList) {
   if (this.isShowing()) this.show();
   this.setPicked(this.picked.yearValue, this.picked.monthIndex, DayList.selectedIndex+1);
}

// Changes the date when a valid year has been entered
function CheckYearInput(YearField) {
   if ((YearField.value.length == YearField.defaultValue.length) && (YearField.defaultValue != YearField.value)) {
      if (this.isShowing()) {
         this.resetTimer(); // Gives the user more time to view the calendar with the newly-entered year
         this.getCalendar().style.zIndex = ++ZCounter; // Make sure this calendar is on top of any other calendars
      }
      var NewYear = GetGoodYear(YearField.value);
      var MonthList = this.getMonthList();
      var NewDay = FixDayList(this.getDayList(), GetDayCount(NewYear, this.picked.monthIndex));
      this.setPicked(NewYear, this.picked.monthIndex, NewDay);
      YearField.defaultValue = YearField.value;
   }
}

// Holds characteristics about a date
function dateObject() {
   if (Function.call) { // Used when 'call' method of the Function object is supported
      var ParentObject = this;
      var ArgumentStart = 0;
   }
   else { // Used with 'call' method of the Function object is NOT supported
      var ParentObject = arguments[0];
      var ArgumentStart = 1;
   }
   ParentObject.date = (arguments.length == (ArgumentStart+1)) ? new Date(arguments[ArgumentStart+0]) : new Date(arguments[ArgumentStart+0], arguments[ArgumentStart+1], arguments[ArgumentStart+2]);
   ParentObject.yearValue = ParentObject.date.getFullYear();
   ParentObject.monthIndex = ParentObject.date.getMonth();
   ParentObject.monthName = MonthNames[ParentObject.monthIndex];
   ParentObject.fullName = ParentObject.monthName + ' ' + ParentObject.yearValue;
   ParentObject.day = ParentObject.date.getDate();
   ParentObject.dayCount = GetDayCount(ParentObject.yearValue, ParentObject.monthIndex);
   var FirstDate = new Date(ParentObject.yearValue, ParentObject.monthIndex, 1);
   ParentObject.firstDay = FirstDate.getDay();
}

// Keeps track of the date that goes into the hidden field
function storedMonthObject(DateFormat, DateYear, DateMonth, DateDay) {
   (Function.call) ? dateObject.call(this, DateYear, DateMonth, DateDay) : dateObject(this, DateYear, DateMonth, DateDay);
   this.yearPad = this.yearValue.toString();
   this.monthPad = (this.monthIndex < 9) ? '0' + String(this.monthIndex + 1) : this.monthIndex + 1;
   this.dayPad = (this.day < 10) ? '0' + this.day.toString() : this.day;
   this.monthShort = this.monthName.substr(0,3).toUpperCase();
   // Formats the year with 2 digits instead of 4
   if (DateFormat.indexOf('YYYY') == -1) this.yearPad = this.yearPad.substr(2);
   // Define the date-part delimiter
   if (DateFormat.indexOf('/') >= 0) var Delimiter = '/';
   else if (DateFormat.indexOf('-') >= 0) var Delimiter = '-';
   else var Delimiter = '';
   // Determine the order of the months and days
   if (/DD?.?((MON)|(MM?M?))/.test(DateFormat)) {
      this.formatted = this.dayPad + Delimiter;
      this.formatted += (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;
   }
   else if (/((MON)|(MM?M?))?.?DD?/.test(DateFormat)) {
      this.formatted = (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;
      this.formatted += Delimiter + this.dayPad;
   }
   // Either prepend or append the year to the formatted date
   this.formatted = (DateFormat.substr(0,2) == 'YY') ? this.yearPad + Delimiter + this.formatted : this.formatted + Delimiter + this.yearPad;
}

// Object for the current displayed month
function displayMonthObject(ParentObject, DateYear, DateMonth, DateDay) {
   (Function.call) ? dateObject.call(this, DateYear, DateMonth, DateDay) : dateObject(this, DateYear, DateMonth, DateDay);
   this.displayID = ParentObject.hiddenFieldName + '_Current_ID';
   this.getDisplay = new Function('return document.getElementById(this.displayID)');
   this.dayHover = DayCellHover;
   this.goCurrent = new Function(ParentObject.objName + '.getCalendar().style.zIndex=++ZCounter;' + ParentObject.objName + '.setDisplayed(Today.getFullYear(),Today.getMonth());');
   if (ParentObject.formNumber >= 0) this.getDisplay().innerHTML = this.fullName;
}

// Object for the previous/next buttons
function neighborMonthObject(ParentObject, IDText, DateMS) {
   (Function.call) ? dateObject.call(this, DateMS) : dateObject(this, DateMS);
   this.buttonID = ParentObject.hiddenFieldName + '_' + IDText + '_ID';
   this.hover = new Function('C','O','NeighborHover(C,O,this)');
   this.getButton = new Function('return document.getElementById(this.buttonID)');
   this.go = new Function(ParentObject.objName + '.getCalendar().style.zIndex=++ZCounter;' + ParentObject.objName + '.setDisplayed(this.yearValue,this.monthIndex);');
   if (ParentObject.formNumber >= 0) this.getButton().title = this.monthName;
}

// Sets the currently-displayed month object
function SetDisplayedMonth(DispYear, DispMonth) {
   this.displayed = new displayMonthObject(this, DispYear, DispMonth, 1);
   // Creates the previous and next month objects
   this.previous = new neighborMonthObject(this, 'Previous', this.displayed.date.getTime() - 86400000);
   this.next = new neighborMonthObject(this, 'Next', this.displayed.date.getTime() + (86400000 * (this.displayed.dayCount + 1)));
   // Creates the HTML for the calendar
   if (this.formNumber >= 0) this.getDayTable().innerHTML = this.buildCalendar();
}

// Sets the current selected date
function SetPickedMonth(PickedYear, PickedMonth, PickedDay) {
   this.picked = new storedMonthObject(this.format, PickedYear, PickedMonth, PickedDay);
   this.setHidden(this.picked.formatted);
   get_coupon_codes();
   this.setDisplayed(PickedYear, PickedMonth);
}

// The calendar object
function calendarObject(DateName, DateFormat, DefaultDate) {

   /* Properties */
   this.hiddenFieldName = DateName;
   this.monthListID = DateName + '_Month_ID';
   this.dayListID = DateName + '_Day_ID';
   this.yearFieldID = DateName + '_Year_ID';
   this.monthDisplayID = DateName + '_Current_ID';
   this.calendarID = DateName + '_ID';
   this.dayTableID = DateName + '_DayTable_ID';
   this.calendarLinkID = this.calendarID + '_Link';
   this.timerID = this.calendarID + '_Timer';
   this.objName = DateName + '_Object';
   this.format = DateFormat;
   this.formNumber = -1;
   this.picked = null;
   this.displayed = null;
   this.previous = null;
   this.next = null;

   /* Methods */
   this.setPicked = SetPickedMonth;
   this.setDisplayed = SetDisplayedMonth;
   this.checkYear = CheckYearInput;
   this.fixYear = FixYearInput;
   this.changeMonth = CheckMonthChange;
   this.changeDay = CheckDayChange;
   this.resetTimer = CalTimerReset;
   this.hideElements = SetElementStatus;
   this.show = ShowCalendar;
   this.handleTimer = DoTimer;
   this.iconHover = CalIconHover;
   this.buildCalendar = BuildCalendarDays;
   this.pickDay = PickDisplayDay;
   this.fixSelects = FixSelectLists;
   this.setHidden = new Function('D','if (this.formNumber >= 0) this.getHiddenField().value=D');
   // Returns a reference to these elements
   this.getHiddenField = new Function('return document.forms[this.formNumber].elements[this.hiddenFieldName]');
   this.getMonthList = new Function('return document.getElementById(this.monthListID)');
   this.getDayList = new Function('return document.getElementById(this.dayListID)');
   this.getYearField = new Function('return document.getElementById(this.yearFieldID)');
   this.getCalendar = new Function('return document.getElementById(this.calendarID)');
   this.getDayTable = new Function('return document.getElementById(this.dayTableID)');
   this.getCalendarLink = new Function('return document.getElementById(this.calendarLinkID)');
   this.getMonthDisplay = new Function('return document.getElementById(this.monthDisplayID)');
   this.isShowing = new Function('return !(this.getCalendar().style.visibility != \'visible\')');

   /* Constructor */
   // Functions used only by the constructor
   function getMonthIndex(MonthAbbr) { // Returns the index (0-11) of the supplied month abbreviation
      for (var MonPos=0;MonPos<MonthNames.length;MonPos++) {
         if (MonthNames[MonPos].substr(0,3).toUpperCase() == MonthAbbr.toUpperCase()) break;
      }
      return MonPos;
   }
   function SetGoodDate(CalObj, Notify) { // Notifies the user about their bad default date, and sets the current system date
      CalObj.setPicked(Today.getFullYear(), Today.getMonth(), Today.getDate());
      if (Notify) alert('WARNING: The supplied date is not in valid \'' + DateFormat + '\' format: ' + DefaultDate + '.\nTherefore, the current system date will be used instead: ' + CalObj.picked.formatted);
   }
   // Main part of the constructor
   if (DefaultDate != '') {
      if ((this.format == 'YYYYMMDD') && (/^(\d{4})(\d{2})(\d{2})$/.test(DefaultDate))) this.setPicked(RegExp.$1, parseInt(RegExp.$2,10)-1, RegExp.$3);
      else {
         // Get the year
         if ((this.format.substr(0,2) == 'YY') && (/^(\d{2,4})(-|\/)/.test(DefaultDate))) { // Year is at the beginning
            var YearPart = GetGoodYear(RegExp.$1);
            // Determine the order of the months and days
            if (/(-|\/)(\w{1,3})(-|\/)(\w{1,3})$/.test(DefaultDate)) {
               var MidPart = RegExp.$2;
               var EndPart = RegExp.$4;
               if (/D$/.test(this.format)) { // Ends with days
                  var DayPart = EndPart;
                  var MonthPart = MidPart;
               }
               else {
                  var DayPart = MidPart;
                  var MonthPart = EndPart;
               }
               MonthPart = (/\d{1,2}/i.test(MonthPart)) ? parseInt(MonthPart,10)-1 : getMonthIndex(MonthPart);
               this.setPicked(YearPart, MonthPart, DayPart);
            }
            else SetGoodDate(this, true);
         }
         else if (/(-|\/)(\d{2,4})$/.test(DefaultDate)) { // Year is at the end
            var YearPart = GetGoodYear(RegExp.$2);
            // Determine the order of the months and days
            if (/^(\w{1,3})(-|\/)(\w{1,3})(-|\/)/.test(DefaultDate)) {
               if (this.format.substr(0,1) == 'D') { // Starts with days
                  var DayPart = RegExp.$1;
                  var MonthPart = RegExp.$3;
               }
               else { // Starts with months
                  var MonthPart = RegExp.$1;
                  var DayPart = RegExp.$3;
               }
               MonthPart = (/\d{1,2}/i.test(MonthPart)) ? parseInt(MonthPart,10)-1 : getMonthIndex(MonthPart);
               this.setPicked(YearPart, MonthPart, DayPart);
            }
            else SetGoodDate(this, true);
         }
         else SetGoodDate(this, true);
      }
   }
}

// Main function that creates the form elements
function DateInput(DateName, Required, DateFormat, DefaultDate) {
   if (arguments.length == 0) document.writeln('<span style="color:red;font-size:' + FontSize + 'px;font-family:' + FontFamily + ';">ERROR: Missing required parameter in call to \'DateInput\': [name of hidden date field].</span>');
   else {
      // Handle DateFormat
      if (arguments.length < 3) { // The format wasn't passed in, so use default
         DateFormat = DefaultDateFormat;
         if (arguments.length < 2) Required = false;
      }
      else if (/^(Y{2,4}(-|\/)?)?((MON)|(MM?M?)|(DD?))(-|\/)?((MON)|(MM?M?)|(DD?))((-|\/)Y{2,4})?$/i.test(DateFormat)) DateFormat = DateFormat.toUpperCase();
      else { // Passed-in DateFormat was invalid, use default format instead
         var AlertMessage = 'WARNING: The supplied date format for the \'' + DateName + '\' field is not valid: ' + DateFormat + '\nTherefore, the default date format will be used instead: ' + DefaultDateFormat;
         DateFormat = DefaultDateFormat;
         if (arguments.length == 4) { // DefaultDate was passed in with an invalid date format
            var CurrentDate = new storedMonthObject(DateFormat, Today.getFullYear(), Today.getMonth(), Today.getDate());
            AlertMessage += '\n\nThe supplied date (' + DefaultDate + ') cannot be interpreted with the invalid format.\nTherefore, the current system date will be used instead: ' + CurrentDate.formatted;
            DefaultDate = CurrentDate.formatted;
         }
         alert(AlertMessage);
      }
      // Define the current date if it wasn't set already
      if (!CurrentDate) var CurrentDate = new storedMonthObject(DateFormat, Today.getFullYear(), Today.getMonth(), Today.getDate());
      // Handle DefaultDate
      if (arguments.length < 4) { // The date wasn't passed in
         DefaultDate = (Required) ? CurrentDate.formatted : ''; // If required, use today's date
      }
      // Creates the calendar object!
      eval(DateName + '_Object=new calendarObject(\'' + DateName + '\',\'' + DateFormat + '\',\'' + DefaultDate + '\')');
      // Determine initial viewable state of day, year, and calendar icon
      if ((Required) || (arguments.length == 4)) {
         var InitialStatus = '';
         var InitialDate = eval(DateName + '_Object.picked.formatted');
      }
      else {
         var InitialStatus = ' style="visibility:hidden"';
         var InitialDate = '';
         eval(DateName + '_Object.setPicked(' + Today.getFullYear() + ',' + Today.getMonth() + ',' + Today.getDate() + ')');
      }
      // Create the form elements
      with (document) {
         writeln('<input type="hidden" name="' + DateName + '" value="' + InitialDate + '">');
         // Find this form number
         for (var f=0;f<forms.length;f++) {
            for (var e=0;e<forms[f].elements.length;e++) {
               if (typeof forms[f].elements[e].type == 'string') {
                  if ((forms[f].elements[e].type == 'hidden') && (forms[f].elements[e].name == DateName)) {
                     eval(DateName + '_Object.formNumber='+f);
                     break;
                  }
               }
            }
         }
         writeln('<table cellpadding="0" cellspacing="2"><tr>' + String.fromCharCode(13) + '<td valign="middle">');
         writeln('<select class="calendarDateInput" id="' + DateName + '_Month_ID" onChange="' + DateName + '_Object.changeMonth(this)">');
         if (!Required) {
            var NoneSelected = (DefaultDate == '') ? ' selected' : '';
            writeln('<option value=""' + NoneSelected + '>' + UnselectedMonthText + '</option>');
         }
         for (var i=0;i<12;i++) {
            MonthSelected = ((DefaultDate != '') && (eval(DateName + '_Object.picked.monthIndex') == i)) ? ' selected' : '';
            writeln('<option value="' + i + '"' + MonthSelected + '>' + MonthNames[i].substr(0,3) + '</option>');
         }
         writeln('</select>' + String.fromCharCode(13) + '</td>' + String.fromCharCode(13) + '<td valign="middle">');
         writeln('<select' + InitialStatus + ' class="calendarDateInput" id="' + DateName + '_Day_ID" onChange="' + DateName + '_Object.changeDay(this)">');
         for (var j=1;j<=eval(DateName + '_Object.picked.dayCount');j++) {
            DaySelected = ((DefaultDate != '') && (eval(DateName + '_Object.picked.day') == j)) ? ' selected' : '';
            writeln('<option' + DaySelected + '>' + j + '</option>');
         }
         writeln('</select>' + String.fromCharCode(13) + '</td>' + String.fromCharCode(13) + '<td valign="middle">');
         writeln('<input' + InitialStatus + ' class="calendarDateInput" type="text" id="' + DateName + '_Year_ID" size="' + eval(DateName + '_Object.picked.yearPad.length') + '" maxlength="' + eval(DateName + '_Object.picked.yearPad.length') + '" title="Year" value="' + eval(DateName + '_Object.picked.yearPad') + '" onKeyPress="return YearDigitsOnly(window.event)" onKeyUp="' + DateName + '_Object.checkYear(this)" onBlur="' + DateName + '_Object.fixYear(this)">');
         write('<td valign="middle">' + String.fromCharCode(13) + '<a' + InitialStatus + ' id="' + DateName + '_ID_Link" href="javascript:' + DateName + '_Object.show()" onMouseOver="return ' + DateName + '_Object.iconHover(true)" onMouseOut="return ' + DateName + '_Object.iconHover(false)"><img src="' + ImageURL + '" align="baseline" title="Calendar" border="0"></a>&nbsp;');
         writeln('<span id="' + DateName + '_ID" style="position:absolute;visibility:hidden;width:' + (CellWidth * 7) + 'px;background-color:' + CalBGColor + ';border:1px solid dimgray;" onMouseOver="' + DateName + '_Object.handleTimer(true)" onMouseOut="' + DateName + '_Object.handleTimer(false)">');
         writeln('<table width="' + (CellWidth * 7) + '" cellspacing="0" cellpadding="1">' + String.fromCharCode(13) + '<tr style="background-color:' + TopRowBGColor + ';">');
         writeln('<td id="' + DateName + '_Previous_ID" style="cursor:default" align="center" class="calendarDateInput" style="height:' + CellHeight + '" onClick="' + DateName + '_Object.previous.go()" onMouseDown="VirtualButton(this,true)" onMouseUp="VirtualButton(this,false)" onMouseOver="return ' + DateName + '_Object.previous.hover(this,true)" onMouseOut="return ' + DateName + '_Object.previous.hover(this,false)" title="' + eval(DateName + '_Object.previous.monthName') + '"><img src="' + PrevURL + '"></td>');
         writeln('<td id="' + DateName + '_Current_ID" style="cursor:pointer" align="center" class="calendarDateInput" style="height:' + CellHeight + '" colspan="5" onClick="' + DateName + '_Object.displayed.goCurrent()" onMouseOver="self.status=\'Click to view ' + CurrentDate.fullName + '\';return true;" onMouseOut="self.status=\'\';return true;" title="Show Current Month">' + eval(DateName + '_Object.displayed.fullName') + '</td>');
         writeln('<td id="' + DateName + '_Next_ID" style="cursor:default" align="center" class="calendarDateInput" style="height:' + CellHeight + '" onClick="' + DateName + '_Object.next.go()" onMouseDown="VirtualButton(this,true)" onMouseUp="VirtualButton(this,false)" onMouseOver="return ' + DateName + '_Object.next.hover(this,true)" onMouseOut="return ' + DateName + '_Object.next.hover(this,false)" title="' + eval(DateName + '_Object.next.monthName') + '"><img src="' + NextURL + '"></td></tr>' + String.fromCharCode(13) + '<tr>');
         for (var w=0;w<7;w++) writeln('<td width="' + CellWidth + '" align="center" class="calendarDateInput" style="height:' + CellHeight + ';width:' + CellWidth + ';font-weight:bold;border-top:1px solid dimgray;border-bottom:1px solid dimgray;">' + WeekDays[w] + '</td>');
         writeln('</tr>' + String.fromCharCode(13) + '</table>' + String.fromCharCode(13) + '<span id="' + DateName + '_DayTable_ID">' + eval(DateName + '_Object.buildCalendar()') + '</span>' + String.fromCharCode(13) + '</span>' + String.fromCharCode(13) + '</td>' + String.fromCharCode(13) + '</tr>' + String.fromCharCode(13) + '</table>');
      }
   }
}

function showSearchBox()
{

	$('#searchDiv').show();
	var left=$("#searchImage").position().left;
	var top=$("#searchImage").position().top;	
	$("#searchDiv").css("position","absolute").css("top",(top+29) + "px").css("left",left + "px");					
	if(document.getElementById('searchDiv').style.display=='none')
		document.getElementById('searchImage').src='images/searchlnk_light.gif';
	else
		document.getElementById('searchImage').src='images/searchlnk.gif';	
		
}
function hideSearchBox()
{

	$('#searchDiv').hide();
	var left=$("#searchImage").position().left;
	var top=$("#searchImage").position().top;	
	$("#searchDiv").css("position","absolute").css("top",(top+29) + "px").css("left",left + "px");					
	if(document.getElementById('searchDiv').style.display=='none')
		document.getElementById('searchImage').src='images/searchlnk_light.gif';
	else
		document.getElementById('searchImage').src='images/searchlnk.gif';	
		
}
function EmailReportCSV(status)
{
	$.ajaxSetup({
		type: 'POST',
		timeout: 0,
		dataType: 'html',
		error: function(xhr) {
			$('#resposeText').html('Error: ' + xhr.status + ' ' + xhr.statusText);
		}
	});	
	if(status==0)
	{
		$("#resposeText").html('<b>Email: <input type="text" id="txt_email" />&nbsp;<input type="button" onclick="EmailReportCSV(1)" value="Send" />');
		$("#loading_image").hide();
	}
	$("#resposeText").show();
	if(status==1)
	{
		if(true)
		{
			$("#loading_image").show();
			$.post("tcpdf_php4/examples/save_as_pdf.php?action=EmailCSV",
				   {
					   CSVContent:$("#CSVContent").val(),
					   email_to:$("#txt_email").val()
				   },
				   function (html)
				   {
					   $("#resposeText").hide();
					   $("#resposeText").html('<span style="color:#ff0000">'+html+'</span>');
					   $("#resposeText").fadeIn("slow");
					   $("#loading_image").hide();
				   },
				   "html"
				   );
		}
		else
		{
			$("#resposeText").hide();
			$("#resposeText").html('<span style="color:#ff0000;font-weight:bold">Invalid Email.</span>');
			$("#resposeText").fadeIn("slow");
			$("#loading_image").hide();
		}
	}
}

function isValidEmail(email) {
    // A very simple email validation checking. 
    // you can add more complex email checking if it helps 
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) {
        return false;
    }
 
    if(splitted[1] != null ) {
        var regexp_user=/^\"?[\w-_\.\']*\"?$/;
        if(splitted[1].match(regexp_user) == null) {
                return false;
        }
    }
 
    if(splitted[2] != null) {
        var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
 
        if(splitted[2].match(regexp_domain) == null) {
            var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
            if(splitted[2].match(regexp_ip) == null) {
                    return false;
            }
        }// if
        return true;
    }
 
    return false;
}

function OpenPopUp(OrderID){
	$('#MainSearchDiv_'+OrderID).slideDown('slow');
}

function ClosePopUp(OrderID){
	$('#MainSearchDiv_'+OrderID).slideUp('slow');
}



function searchProduct(OrderID, SiteID){
	var search_keyword = $('#search_product_'+OrderID).val();
	if(search_keyword == ''){
		alert("Please enter search keyword.");
		return false; 
	}else{
		$.ajax({
			url: "ajax/getAjaxProductSearch.php?keyword="+search_keyword+"&SiteID="+SiteID+"&OrderID="+OrderID,
			dataType: 'html',
			type: 'GET',
			async: false,
			success: function(html){
				$('#ShowProductsList_'+OrderID).html(html);
			}
		});
	}
}

function addItem(IDs, OrderID, SiteID){
	var IdsArray = IDs.split('|');
	var ProductIDs = '';
	var countChecked = 0;
	for(var count=0; count<IdsArray.length; count++){
		if(document.getElementById('chk_'+IdsArray[count]).checked && document.getElementById('text_'+IdsArray[count]).value != '0'){
			var ProductIDs = ProductIDs + '||' + IdsArray[count] + '--' + document.getElementById('text_'+IdsArray[count]).value;
			var countChecked = countChecked + 1;
		}
	}
	if(countChecked == 0){
		alert("Please check atleast 1 checkbox and fill quantity to add item.");
		return false
	}else{
		document.getElementById('AddButon_'+OrderID).style.display = 'none';
		document.getElementById('LoadingIcon_'+OrderID).style.display = '';
		var url="ajax/addAjaxProductSearch.php?Prod_ids="+ProductIDs+"&SiteID="+SiteID+"&OrderID="+OrderID.replace(/_\d+/g, "");
		//alert(url);
		if(confirm("Do you really want to add item in this order."))
		{
			$.ajax({
				"url": url,
				"dataType": 'html',
				"type": 'GET',
				"async": false,
				"success": function(html){
					//alert(html);
					eval(html);
				}
			});
		}
		else
		{
			$('#AddButon_'+OrderID).show();
			$('#LoadingIcon_'+OrderID).hide();
			$('#MainSearchDiv_'+OrderID).slideUp('slow');				
		}
	}
	
}
function addItemLogin(IDs, OrderID, SiteID,type)
{
	var siteurl="ajax/addAjaxProductSearch.php?Prod_ids="+IDs+"&SiteID="+SiteID+"&OrderID="+OrderID+'&'+type+'--login--email='+$('#'+type+'--login--email').val()+'&'+type+'--login--password='+$('#'+type+'--login--password').val();
	alert(siteurl);
	$.ajax({
			url: siteurl,
			dataType: 'html',
			type: 'GET',
			async: false,
			success: function(html){
				//alert(html);
				eval(html);

			}
		});		
}
function chkEnter(OrderID, SiteID, e){
	if (!e) var e = window.event;
	if(e.keyCode=='13'){
		searchProduct(OrderID, SiteID);
	}
}

function deleteRecord(SiteID, OrderID, ItemID){
	if(confirm('Are you sure want to delete this item from order.')){
		
		document.getElementById('DeleteImg_'+OrderID+'_'+ItemID).src = 'images/l1.gif';
		
		$.ajax({
			url: "ajax/deleteAjaxProductSearch.php?SiteID="+SiteID+"&OrderID="+OrderID+"&ItemID="+ItemID,
			dataType: 'html',
			type: 'GET',
			async: false,
			success: function(html){
				eval(html);
			}
		});
	}else{
		return false;
	}
}

function chk_all(Element){
	if(Element.checked)
		$('.chk_prod').attr('checked', true);
	else
		$('.chk_prod').attr('checked', false);
}	

function OpenPopUpDiscount(OrderID){
	$('#MainDicountDiv_'+OrderID).slideDown('slow');
}

function ClosePopUpDiscount(OrderID){
	$('#MainDicountDiv_'+OrderID).slideUp('slow');
}

function ApplyDiscount(OrderID, SiteID){
	var discount_field = $('#disctotal_'+OrderID+'_'+SiteID).val();
	var checkb=$('[name=discount_type_'+OrderID+'_'+SiteID+']:checked').val();
	var unDef;
	if(discount_field == ''){
		if(checkb==unDef)
			alert("Please select discount type and enter discount value.");
		else if(checkb=='code')
			alert("Please enter discount code.");
		else
			alert("Please enter discount value.");
		return false; 
	}else if(checkb!='code' && isNaN(discount_field))
	{
		alert("please enter a valid discount value.");
		if(checkb==unDef)
			alert("Please select discount type.");
	}
	else
	{
		//alert("ajax/ajax_common.php?action=ApplyDiscount&discounttype="+checkb+"&discount_field_val="+discount_field+"&SiteID="+SiteID+"&OrderID="+OrderID);
		$.ajax({
			url: "ajax/ajax_common.php?action=ApplyDiscount&discounttype="+checkb+"&discount_field_val="+discount_field+"&SiteID="+SiteID+"&OrderID="+OrderID,
			dataType: 'html',
			type: 'GET',
			async: false,
			success: function(html){
				//alert(html);
				eval(html);
			}
		});
	}
}
function ClearDiscount(OrderID, SiteID)
{
	$.ajax({
		url: "ajax/ajax_common.php?action=ClearDiscount&SiteID="+SiteID+"&OrderID="+OrderID.replace(/_\d+/g, ""),
		dataType: 'html',
		type: 'GET',
		async: false,
		success: function(html){
			//alert(html);
			eval(html);
			ClosePopUpDiscount(OrderID);
		}
	});
}

function changeVPStatus(siteid,orderid,email,ele)
{
	var myurl="ajax/ajax_common.php?action=changeVPStatus&SiteID="+siteid+"&OrderID="+orderid+'&Email='+email+'&Status='+ele.checked;
	//$("#common_loading").show('slow');
	$.ajax({
		url: myurl,
		dataType: 'html',
		type: 'GET',
		async: false,
		success: function(html){
			//alert(html);
			eval(html);
		}
	});	
}

function calculateMargin(RowID, siteid, orderid, email, auto_deduction){
	var Total = $("#Total_"+RowID).val();	
	Total = Total.replace(/,/g, "");
	
	var Cost = $("#Cost_"+RowID).val();
	Cost = Cost.replace(/,/g, "");
	
	if(Total == ''){
		alert("Please fill total value.");
		return false;
	}
	if(Cost == '' || Cost == '0.00'){
		alert("Please fill cost value.");
		return false;
	}
	
	var result = ((Total * 100) / Cost) - 100;	
	result = result.toFixed(2);
	
	
	var myurl="ajax/ajax_common.php?action=changeMargin&SiteID="+siteid+"&OrderID="+orderid+'&Email='+email+'&Value='+result+'&Cost='+Cost;
	$.ajax({
		url: myurl,
		dataType: 'html',
		type: 'GET',
		async: false,
		success: function(html){
			//alert(html);
			//eval(html);
			if(auto_deduction != ''){
				result = result - auto_deduction;
			}
			$("#Margin_"+RowID).val(result+"%");
			$("#CalDiv_"+RowID).slideUp('slow');
		}
	});	
	
}

function GetSaleRep(IsChecked)
{
	if(IsChecked)
	{
		$.ajax({
			url: 'ajax/sales_rep.php',
			dataType: 'html',
			type: 'GET',
			async: false,
			success: function(html){
				$('#Salesrep_data').html(html);				
				$('#RowSalesRep').slideDown('slow');
				
			}
		});	
	}
	else
	{
		$('#Salesrep_data').html('');
	}
}

function AddSaleRep()
{
	var SPName = $('#SaleRepName').val();
	document.getElementById('loading').style.display = '';
	if(SPName == '')
	{
		alert("Please enter sale rep name.");
	}
	else
	{
		
		$("#FRM").submit( function() {
			$.post('ajax/sales_rep.php?action=add&SPName='+SPName, $(this).serialize(), function(r) {
				$('#Salesrep_data').html(r);
				return false;
			});
			return false;
		});
		
	}
}
function DelSaleRep(SPID)
{
	if(confirm("Are you sure want to delete this?"))
	{
		$.ajax({
			url: 'ajax/sales_rep.php?action=delete&SPID='+SPID,
			dataType: 'html',
			type: 'GET',
			async: false,
			success: function(html){
				$('#Salesrep_data').html(html);	
			}
		});	
	}
}
function EditSaleRep(SPID)
{
	var SPName = $('#SaleRepNameEdit_'+SPID).val();
	document.getElementById('loading_'+SPID).style.display = '';
	if(SPName == '')
	{
		alert("Please enter sale rep name.");
	}
	else
	{
		$("#FRM_"+SPID).submit( function() {
			$.post('ajax/sales_rep.php?action=update&SPName='+SPName+"&SPID="+SPID, $(this).serialize(), function(r) {
				$('#Salesrep_data').html(r);
				return false;
			});
			return false;
		});
	}
}

function AddSaleRepOrder(RowID, siteid, orderid, email, SaleRepID)
{
	if(SaleRepID != '')	
	{
		IsChecked = 1;	
	}
	else
	{
		IsChecked = 0;
	}
	var myurl="ajax/ajax_common.php?action=AddSaleRep&SiteID="+siteid+"&OrderID="+orderid+'&Email='+email+'&SaleRepID='+SaleRepID+'&Ischecked='+IsChecked;
	//alert(myurl);
	$.ajax({
		url: myurl,
		dataType: 'html',
		type: 'GET',
		async: false,
		success: function(html){
			//alert(html);
			$("#SaleRepDiv_"+RowID).slideUp('slow');
		}
	});	
}

function ShowPostResponseForm(id,order_id,site_id){
	$("#postResponseDiv").show('slow');
	$("#responseid").val(id);
	$("#order_id").val(order_id);
	$("#site_id").val(site_id);

}
function ClosePostResponsePopUp(order_id,site_id)
{
	$("#postResponseDiv").hide('slow');	
	$("#order_id").val('');
	$("#site_id").val('');

}
function submitResponse()
{
	var comment_id= $("#comment_id").val();
	var order_id = $("#order_id").val();
	var site_id = $("#site_id").val();
	var bClosedTicket = $("#bClosedTicket").val();
	//alert(bClosedTicket);
	var postresponse = $("#postresponse").val();
	var myurl="ajax/updatecomments.ajax_new.php?action=AddResponse";
	//alert(myurl);
	$.ajax({
		url: myurl,
		dataType: 'html',
		type: 'POST',
		data: {"comment_id":comment_id,"order_id":order_id,"site_id":site_id,"postresponse":postresponse,"bClosedTicket":bClosedTicket},
		async: false,
		success: function(html){
			//alert(html);
			$("#print_comments").html(html);
			$("#error_text").html('<b>Thank You,</b><br>Your message has been sent successfully to the support team. You will receive a reply from our website representative by the end of the next business day.<br>Thanks for giving your precious time to contact us.');
			$("#error_text").fadeIn();
			//eval(html);
		}
	});		
}

function ShowCommentHistory(comment_id)
{
	var myurl="ajax/ajax_common.php?action=ShowExternalComments_Tickets";
	$.ajax({
		url: myurl,
		dataType: 'html',
		type: 'POST',
		data: {"comment_id":comment_id},
		async: false,
		success: function(html){
			//alert(html);
			eval(html);
		}
	});		
}
function CloseCommentHistory()
{
	$("#div_comment_history").fadeOut();
}
function ResponseTicket(response_id,comment_id,status)
{
	$("#Ticket_responseid").val(response_id);
	$("#Ticket_commentid").val(comment_id);
	$("#Ticket_status").val(status);
	document.getElementById('send_mail_for_ticket').checked=true;
	$("#postResponseTicketDiv").fadeIn();
}
function ClosePostTicketPopUp()
{
	$("#postResponseTicketDiv").fadeOut();
	$("#Ticket_responseid").val('');
	$("#Ticket_commentid").val('');
	$("#Ticket_status").val('');	
	$("#postresponseTicket").val('');
}
function submitTicketResponse(status)
{
	var comment_id = $("#Ticket_commentid").val();
	var response=$("#postresponseTicket").val();
	var isEmailChecked=document.getElementById('send_mail_for_ticket').checked;
	var process=true;
	if(isEmailChecked && status!='only_close')
	{
		if(!confirm('Are you sure you want to email your response to client?'))
		{
			process=false;
		}
	}
	if(process)
	{
		var myurl="ajax/ajax_common.php?action=ResponseTicket";
		$.ajax({
			url: myurl,
			dataType: 'html',
			type: 'POST',
			data: {"comment_id":comment_id,"status":status,"postresponseTicket":response,'SendEmail':isEmailChecked},
			async: false,
			success: function(html){
				eval(html);
			}
		});	
	}
}

function showPPCbudgetFields(val)
{
	if(val=='1')
	{
		// +--
		// | Keep both static and formulated values, for easier reference - KAI
		// +--
		// document.getElementById('ppc_static_amount').disabled=false;
		// document.getElementById('ppc_formulated_amount').disabled=true;
		// document.getElementById('ppc_formulated_percentage').disabled=true;
		$("#div_ppc_static").show('slow');
		$("#div_ppc_formulated").hide('slow');
	}
	else
	{
		// +--
		// | Keep both static and formulated values, for easier reference - KAI
		// +--
		// document.getElementById('ppc_static_amount').disabled=true;
		// document.getElementById('ppc_formulated_amount').disabled=false;
		// document.getElementById('ppc_formulated_percentage').disabled=false;	
		$("#div_ppc_static").hide('slow');
		$("#div_ppc_formulated").show('slow');
	}
}

