
function cash(refresh)
{        
	if(refresh || true)
	{
		var d = ((new Date()) - (new Date(0)))+Math.ceil(Math.random()*1000000);
		return "vvvv="+d;
	}
	return "";
}

function emptySelect(obj)
{
	while (obj.options.length>0) obj.options[obj.options.length-1] = null;
}


function trim(arg)
{ 
    return(arg.replace(/^\s*|\s*$/g, ""));
} 

function ShowHideDiv(bool, divName)
{
	var obj = document.getElementById(divName);
	if (bool == true)
		obj.style.display='block';
	else
		obj.style.display='none';			
}

function htmlEnc(str)
{
	return str.replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/'/g,'&#039;').replace(/</g,'&lt;').replace(/>/g,'&gt;')
}

function popupWindow(url) 
{
  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=100,height=100,screenX=0,screenY=0,top=0,left=0')
}
function isInSelect(obj, val)
{
	for(var i=0; i<obj.options.length; i++)
	{
		if (obj.options[i].value == val)
			return true;
	}
	return false;
}

function isInt(str)
{
	var reNumber = /^\d+$/;
	if(reNumber.test(str))
	{
		return true
	}
	else
	{
		return false
	}
}

function checkEmail(str)
{
	str = trim(str);
    return (str.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1);
}
	
function proper(val)
{	
	if (val=="") return "";
	val=val.replace(/\s+/g,"");
	val=val.replace(/,|;|:+/g,",");
	val=val.replace(/^,+/g,"");
	val=val.replace(/,+$/g,"");
	return val.replace(/,{2,}/g,",");
}

function winOpen(w, h, strUrl, winName, scr)
{
	wndX = getWindowX(w);
	wndY = getWindowY(h);
	window.open(strUrl, winName, "fullscreen=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars="+scr+",resizable=0,width="+w+",height="+h+",screenX="+wndX+",screenY="+wndY+",left="+wndX+",top="+wndY);
}
function getWindowX(wndWidh)
{
	var wndX;
	wndX=Math.round((screen.width - wndWidh)/2);
	wndX=(wndX<0)?0:wndX;
	return wndX;
}
function getWindowY(wndHeight)
{
	var wndY;
	wndY=Math.round((screen.height - wndHeight)/2); 
	wndY=(wndY<0)?0:wndY;
	return wndY;
}
	
function checkLink(LinkID)
{
	/*if (!allLinks) return false;
	
	var re = new RegExp("="+LinkID+"\\|\\d+=");
	var child = allLinks.match(re);
	if (!child)  return false;
	var parent = ""+(child+"").split("|")[1];
	parent = parent.substr(0,parent.length-1);
	if (parent=="0") return true;

	return checkLink(parent);*/
	return true
	
}

function onLink()
{
	return true;
}

function openPrint()
{
	//return true;
	//lastMenuID, lastTemplateID, lastPageID, lastURL, lastLanguageID;
	try
	{
		//alert("print.php?menuID="+lastMenuID+"&tid="+lastTemplateID+"&pid="+lastPageID+"&lng="+lastLanguageID+"&"+lastURL);
		window.open("print.php?menuID="+lastMenuID+"&tid="+lastTemplateID+"&pid="+lastPageID+"&lng="+lastLanguageID+"&"+lastURL ,"popupPrint","width=960,height=600,resizable=0,toolbar=0,location=0,status=0,menubar='0',directories=0,scrollbars=1");
	}
	catch(e){}
}

//************ LANGUAGE  *****************

function setLanguage(lID)
{
    isLngsExpanded = false;
	lastLanguageID = lID;
	lngSwitched = true;
	_doRequest(lastMenuID,lastTemplateID,lastPageID,lID,lastURL);
	
	//sURL = self.location.href
	/*attrs = document.location.search;
	lngStart = attrs.indexOf("lng=");
	lngEnd = (attrs.indexOf("&", lngStart))-1;
	lngEnd = (lngEnd<0)?attrs.length:lngEnd;
	if(lngStart>0)
		sURL = attrs.replace(attrs.substr(lngStart, lngEnd), "lng="+lID);
	else
		sURL = document.location.href + ((attrs.length>0)?"&":"?") +("lng="+lID);
	
	location.href = sURL;*/
}

// ************ DATE ******************************************
// <input value="__/__/____" maxlength="10" onkeydown="return date_keydown(this);" onkeyup="date_keyup(this);" dformat="MM/DD/YYYY" onfocus="date_focus(this);" onclick="date_click(this);" onblur="date_blur(this);" onkeypress="return date_keypress(this);" pos="0" msg="The date you typed incorrect."  startDate='01/01/1900' endDate='01/01/2079' style="width:70px;">
function date_click(obj)
{
	var r = obj.createTextRange();
	var x= window.event.offsetX;
	r.collapse(false);
	
	for(var i=9;i>=0;i--)
	{
		r.move("character",-1);
		if (i!=2 && i!=5 && r.offsetLeft<=x) break;
	}
	
	obj.pos = i;
	r.expand("character");
	r.select();	
}

function date_focus(obj)
{
	var r = obj.createTextRange();
	r.collapse(true);	
	obj.pos = 0;
	r.expand("character");
	r.select();	
}

function date_keydown(obj)
{
	switch (event.keyCode)
	{
		case 9:	// TAB
			break;	
				
		case 35:	// END
			obj.pos=9;
			break;
		
		case 36:	// HOME
			obj.pos=0;
			break;
			
		case 37:	// <-
			if (obj.pos<1) return false;
			obj.pos-=(obj.pos==3 || obj.pos==6)?2:1;
			break;

		case 39:	// ->
			if (obj.pos>8) return false;
			obj.pos+=(obj.pos==1 || obj.pos==4)?2:1;
			break;	

		case 46:	// DEL
			obj.value = obj.value.substring(0,obj.pos)+"_"+obj.value.substring(obj.pos+1);
			if (obj.pos<9) obj.pos+=(obj.pos==1 || obj.pos==4)?2:1;
			return false;
			break;	

		case 8:	// BACK
			obj.value = obj.value.substring(0,obj.pos)+"_"+obj.value.substring(obj.pos+1);
			if (obj.pos>0) obj.pos-=(obj.pos==3 || obj.pos==6)?2:1;		
			return false;
			break;
			
		default:
			if (!((event.keyCode>47 && event.keyCode<58) || (event.keyCode>95 && event.keyCode<106))) return false;
	}

	return true;			
}

function date_keypress(obj)
{
	if (!((event.keyCode>47 && event.keyCode<58) || (event.keyCode>95 && event.keyCode<106))) return false;
	date_keyup(obj);
	if (obj.pos<9) obj.pos+=(obj.pos==1 || obj.pos==4)?2:1;	
}

function date_keyup(obj)
{
	var r = obj.createTextRange();
	r.collapse();
	r.move("character",obj.pos);
	r.expand("character");
	r.select();
}

function date_blur(obj)
{
	if (obj.value=="" || obj.value=="__/__/____") return true;

	var str = obj.value.replace(/_/g,"");
	if (obj.dformat=="MM/DD/YYYY")
	{
		var temp = new Date(str);
	}
	else
	{
		var t = str.split("/");
		var temp = new Date(t[1]+"/"+t[0]+"/"+t[2]);
	}

	if (isNaN(temp))
	{
		obj.value="__/__/____";
		alert(obj.msg);
		return false;
	}
	
	obj.value=DateToString(temp, obj.dformat);
	var tempCurrDate = new Date(obj.value);
	var tempStartDate = new Date(obj.startDate);
	var tempEndDate = new Date(obj.endDate);
	if (tempCurrDate < tempStartDate)
	{
		alert("The start date cannot be earlier than "+ obj.startDate);
		obj.value="__/__/____";
		obj.focus();
		return false;
	}
	else if(tempCurrDate > tempEndDate)
	{
		alert("The end date cannot be later than "+ obj.endDate);
		obj.value="__/__/____";
		obj.focus();
		return false;
	}
	return true;
}

function digit2(val)
{
	return (val<10)?('0'+val):val;
}

function DateToString(d, f)
{
	if(f=="MM/DD/YYYY") return digit2(d.getMonth()+1)+'/'+digit2(d.getDate())+'/'+((d.getFullYear()<1930)?d.getFullYear()+100:d.getFullYear());
	if(f=="DD/MM/YYYY") return digit2(d.getDate())+'/'+digit2(d.getMonth()+1)+'/'+((d.getFullYear()<1930)?d.getFullYear()+100:d.getFullYear());
}


// ************ TIME ******************************************

function time_click(obj)
{
	var r = obj.createTextRange();
	var x= window.event.offsetX;
	r.collapse(false);
	
	for(var i=4;i>=0;i--)
	{
		r.move("character",-1);
		if (i!=2 && r.offsetLeft<=x) break;
	}
	
	obj.pos = i;
	r.expand("character");
	r.select();	
}

function time_focus(obj)
{
	var r = obj.createTextRange();
	r.collapse(true);	
	obj.pos = 0;
	r.expand("character");
	r.select();	
}

function time_keydown(obj)
{
	switch (event.keyCode)
	{
		case 9:	// TAB
			break;	
				
		case 35:	// END
			obj.pos=4;
			break;
		
		case 36:	// HOME
			obj.pos=0;
			break;
			
		case 37:	// <-
			if (obj.pos<1) return false;
			obj.pos-=(obj.pos==3)?2:1;			
			break;

		case 39:	// ->
			if (obj.pos>3) return false;
			obj.pos+=(obj.pos==1)?2:1;
			break;	

		case 46:	// DEL
			obj.value = obj.value.substring(0,obj.pos)+"_"+obj.value.substring(obj.pos+1);
			if (obj.pos<4) obj.pos+=(obj.pos==1)?2:1;
			return false;
			break;	

		case 8:	// BACK
			obj.value = obj.value.substring(0,obj.pos)+"_"+obj.value.substring(obj.pos+1);
			if (obj.pos>0) obj.pos-=(obj.pos==3)?2:1;		
			return false;
			break;
			
		default:
			if (!((event.keyCode>47 && event.keyCode<58) || (event.keyCode>95 && event.keyCode<106))) return false;
	}

	return true;			
}

function time_keypress(obj)
{

	if (!((event.keyCode>47 && event.keyCode<58) || (event.keyCode>95 && event.keyCode<106))) return false;
	time_keyup(obj);
	if (obj.pos<4) obj.pos+=(obj.pos==1)?2:1;
}

function time_keyup(obj)
{
	var r = obj.createTextRange();
	r.collapse();
	r.move("character",obj.pos);
	r.expand("character");
	r.select();
}

function time_blur(obj)
{
	if (obj.value=="" || obj.value=="__:__") return true;

	var str = obj.value.replace(/_/g,"");	
	var t = str.split(":");
	var val = parseInt(t[0],10)*60+parseInt(t[1],10);
	if (isNaN(val))
	{
		obj.value="__:__";
		alert(obj.msg);
		return false;
	}
	obj.value=MinToTime(val);
	return true;
}


function MinToTime(val)
{
	return digit2((Math.floor(val/60))%24)+':'+digit2(val%60);
}

/************** Functions for AJAX ***************/
/*
	mID => menu id
	tID => template id
	pID => page id
	lng => language id
	url => url for request
*/
//var lastMenuID, lastTemplateID, lastPageID, lastLanguageID;
//file, callback function, is post, only for language
var urlCallbacks = [
					["content/topmenu.php", showTopMenuContent, false, true],
					["content/languages.php", showLanguagesContent, false, false],
					//["content/pages/bigBanner.php", showBigBannersContent, false, false],
					//["content/leftmenu.php", showLeftMenu, false, true],
					//["content/footermenu.php", showFooterContent, false, true],
					["content/footer.php", showFooterBlockContent, false, true],
					["content/header.php", showHeaderBlockContent, false, true],
					["getContent.php", showContent, true, false]
				   ];
var functionIndex = 0;
function _doRequest(mID,tID,pID,lng,url)
{
	try
	{
	    //makeHistory(mID);
	    
		if (tID=="0" && (pID=="0" || pID=="") && url!="")
		{
			self.location.href = (url.indexOf("://") >= 0)?url:("http://"+url);
		}
		else
		{
			try
			{
				timestamp = (new Date()).getTime();
			}
			catch(e){}
			
			lng = lastLanguageID;
			
			functionIndex = 0;
			if (urlCallbacks[functionIndex][2]==false)
			{
				requestURL = urlCallbacks[functionIndex][0]+"?"+timestamp+"&menuID="+mID+"&tid="+tID+"&pid="+pID+"&lng="+lng+"&url="+url+"&ajax=1";
				ajax(requestURL, urlCallbacks[functionIndex][1], false);
			}
			else
			{
				requestURL = urlCallbacks[functionIndex][0]+"?"+timestamp+"&menuID="+mID+"&tid="+tID+"&pid="+pID+"&lng="+lng+"&ajax=1";
				ajaxPost(requestURL, urlCallbacks[functionIndex][1], false, url);
			}
			
			showloading();
			
			lastMenuID = mID;
			lastPageID = pID;
			lastTemplateID = tID;
			lastURL = url;
		}
		
		isLngsExpanded = false;
	}
	catch(e){}
	
	top.location.href = "#";
}

var lngSwitched = false;
function callNextFunction()
{
	functionIndex++;
	if (urlCallbacks[functionIndex])
	{
	    if (urlCallbacks[functionIndex][3]==false)
	    {
		    if (urlCallbacks[functionIndex][2]==false)
		    {
			    requestURL = urlCallbacks[functionIndex][0]+"?"+timestamp+"&menuID="+lastMenuID+"&tid="+lastTemplateID+"&pid="+lastPageID+"&lng="+lastLanguageID+"&url="+lastURL+"&ajax=1";
			    ajax(requestURL, urlCallbacks[functionIndex][1], false);
		    }
		    else
		    {
			    requestURL = urlCallbacks[functionIndex][0]+"?"+timestamp+"&menuID="+lastMenuID+"&tid="+lastTemplateID+"&pid="+lastPageID+"&lng="+lastLanguageID+"&ajax=1";
			    ajaxPost(requestURL, urlCallbacks[functionIndex][1], false, lastURL);
		    }
		}
		else
		{
		    if (lngSwitched==true)
		    {
		        if (urlCallbacks[functionIndex][2]==false)
		        {
			        requestURL = urlCallbacks[functionIndex][0]+"?"+timestamp+"&menuID="+lastMenuID+"&tid="+lastTemplateID+"&pid="+lastPageID+"&lng="+lastLanguageID+"&url="+lastURL+"&ajax=1";
			        ajax(requestURL, urlCallbacks[functionIndex][1], false);
		        }
		        else
		        {
			        requestURL = urlCallbacks[functionIndex][0]+"?"+timestamp+"&menuID="+lastMenuID+"&tid="+lastTemplateID+"&pid="+lastPageID+"&lng="+lastLanguageID+"&ajax=1";
			        ajaxPost(requestURL, urlCallbacks[functionIndex][1], false, lastURL);
		        }
		    }
		    else
		    {
		        callNextFunction();
		    }
		}
	}
	else
	{
	    lngSwitched = false;
		hideloading();
		
		checkHomeBanner();
	}
}

////////////////////Show region's content functions
function showTopMenuContent(txtContent)
{
	callNextFunction();
	try
	{
		document.getElementById("topMenuContent").innerHTML = txtContent;
	}
	catch(e){}
}
function showLanguagesContent(txtContent)
{
	callNextFunction();
	try
	{
		document.getElementById("languagesContent").innerHTML = txtContent;
	}
	catch(e){}
}
function showBigBannersContent(txtContent)
{
	callNextFunction();
	try
	{
		document.getElementById("bigBannerContent").innerHTML = txtContent;
	}
	catch(e){}
}

function showContent(txtContent)
{
	callNextFunction();
	try
	{
	    //alert(txtContent);
		document.getElementById("pageContent").innerHTML = txtContent;
		//alert(document.getElementById("pageContent").innerHTML);
	}
	catch(e){}
}
function showLeftMenu(txtContent)
{
	callNextFunction();
	try
	{
		document.getElementById("leftMenuContent").innerHTML = txtContent;
	}
	catch(e){}
}
function showFooterContent(txtContent)
{
	callNextFunction();
	try
	{
		document.getElementById("footerContent").innerHTML = txtContent;
	}
	catch(e){}
}
function showFooterBlockContent(txtContent)
{
	callNextFunction();
	try
	{
		document.getElementById("footerContent").innerHTML = txtContent;
	}
	catch(e){}
}
function showHeaderBlockContent(txtContent)
{
	callNextFunction();
	try
	{
		document.getElementById("headerContent").innerHTML = txtContent;
	}
	catch(e){}
}

///////////////////////////////////////////////////////

/************ End Functions for AJAX *************/

function showNode(obj)
{
	try
	{
		if (obj.style.display == 'none')
			obj.style.display = 'block';
		else
			obj.style.display = 'none';
	}
	catch(e){}
}

/******************* Functions for languages expandable menu *******************/
isLngsExpanded = false;
function expandLanguages()
{
    try
    {
        o = document.getElementById('lngsDiv');
        oTtl = document.getElementById('lngsTitle');
        
        if (isLngsExpanded == false)
        {
            o.className = "lngsOpened";
            oTtl.bgColor = "#DFDED3";
            oTtl.style.backgroundImage = "url(images/languages_title_bg.gif)";
        }
        else
        {
            o.className = "lngsClosed";
            oTtl.bgColor = "";
            oTtl.style.backgroundImage = "url(images/languages_title_bg1.gif)";
        }
        
        isLngsExpanded = !isLngsExpanded;
    }
    catch(e){}
}

function _RFPCreate(isRFPCreate)
{
	try
	{
		obj = document.getElementById("attachProposalTR");
		obj.style.display = "none";
		
		if (isRFPCreate == 1)
		{
			obj.style.display = "block";
		}
	}
	catch(e){ }
}

function makeHistory(newHash)
{
    try
    {
        window.location.hash = newHash;
    }
    catch(e){ }
}

/****************** Functions for forms *******************/
function doLoad(value, reqURL)
{
	var req = new JsHttpRequest();
	req.onreadystatechange = function()
	{
	    if (req.readyState == 4)
	    {
	    	hideloading();
	        // Write result to page element (_RESULT becomes responseJS). 
	        document.getElementById('pageContent').innerHTML = req.responseText;
	    }
	}
	// Prepare request object (automatically choose GET or POST).
	req.open(null, reqURL, true);
	// Send data to backend.
	req.send( { q: value } );
}

function PostProposalApplication()
{
	checkedRight = checkProposalForm();
	if (checkedRight==true)
	{
		try
		{
			requestURL = urlCallbacks[urlCallbacks.length-1][0]+"?menuID="+lastMenuID+"&tid=0&pid=proposal_request&lng="+lastLanguageID+"&ajax=1";
			doLoad(document.postForForm, requestURL);
			showloading();
		}
		catch(e){}
	}
	
	return false;
}
function checkProposalForm()
{
	formChecked = true;
	
	try
	{
		obj = document.postForForm;
		/*** Check e-mail format ***/
		var reg = /^.+\@.+\..+$/;
		
		if(obj.fullname.value=="")
		{
			alert(document.getElementById('objNameWarning').value);
			obj.fullname.focus();
			formChecked = false;
		}
		else if(obj.phone.value=="")
		{
			alert(document.getElementById('objPhoneWarning').value);
			obj.phone.focus();
			formChecked = false;
		}
		else if(!reg.test(obj.email.value))
		{
			alert(document.getElementById('objEmailWarning').value);
			obj.email.focus();
			obj.email.select();
			formChecked = false;
		}
		else if(obj.jobTitle.value=="")
		{
			alert(document.getElementById('objJobTitleWarning').value);
			obj.jobTitle.focus();
			formChecked = false;
		}
	}
	catch(e)
	{
		alert(e);
		formChecked = false;
	}
	
	return formChecked;
}

function PostOutsourcingGuideApplication()
{
	checkedRight = checkOutsourcingGuideForm();
	if (checkedRight==true)
	{
		try
		{
			requestURL = urlCallbacks[urlCallbacks.length-1][0]+"?menuID="+lastMenuID+"&tid=0&pid=out_guide&lng="+lastLanguageID+"&ajax=1";
			doLoad(document.postForForm, requestURL);
			showloading();
		}
		catch(e){}
	}
	
	return false;
}
function checkOutsourcingGuideForm()
{
	formChecked = true;
	
	try
	{
		obj = document.postForForm;
		/*** Check e-mail format ***/
		var reg = /^.+\@.+\..+$/;
		
		if(obj.firstname.value=="")
		{
			alert(document.getElementById('objFirstNameWarning').value);
			obj.firstname.focus();
			formChecked = false;
		}
		else if(obj.lastname.value=="")
		{
			alert(document.getElementById('objLastNameWarning').value);
			obj.lastname.focus();
			formChecked = false;
		}
		else if(obj.companyName.value=="")
		{
			alert(document.getElementById('objCompanyNameWarning').value);
			obj.companyName.focus();
			formChecked = false;
		}
		else if(obj.companyURL.value=="")
		{
			alert(document.getElementById('objCompanyURLWarning').value);
			obj.companyURL.focus();
			formChecked = false;
		}
		else if(obj.phone.value=="")
		{
			alert(document.getElementById('objTelephoneWarning').value);
			obj.phone.focus();
			formChecked = false;
		}
		else if(!reg.test(obj.email.value))
		{
			alert(document.getElementById('objEmailWarning').value);
			obj.email.focus();
			obj.email.select();
			formChecked = false;
		}
	}
	catch(e)
	{
		alert(e);
		formChecked = false;
	}
	
	return formChecked;
}

function checkContactForm()
{
	try
	{
		var obj = document.postForForm;
		/*** Check e-mail format ***/
		var reg = /^.+\@.+\..+$/;
		
		if(obj.first_name.value=="")
		{
			alert(document.getElementById('objFirstNameWarning').value);
			obj.first_name.focus();
			return false;
		}
		
		if(obj.last_name.value=="")
		{
			alert(document.getElementById('objLastNameWarning').value);
			obj.last_name.focus();
			return false;
		}
		
		if(!reg.test(obj.email.value))
		{
			alert(document.getElementById('objEmailWarning').value);
			obj.email.focus();
			obj.email.select();
			return false;
		}
	}
	catch(e)
	{
		return false;
	}
	
	return true;
}

function checkHomeBanner()
{
    try
    {
        try
        {
            if (navigator.appVersion.search(/msie/i) > 0)
                document.getElementById("bigBannerImg").innerHTML = "<img src=\"images/spacer.gif\" style=\"filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src='"+document.getElementById("bannerSrc").value+"');\">";
            else
                document.getElementById("bigBannerImg").innerHTML = "<img src=\""+document.getElementById("bannerSrc").value+"\">";
        }
        catch(e)
        {
            try
            {
                document.getElementById("bigBannerImg").innerHTML = "<img src=\""+document.getElementById("bannerSrc").value+"\">";
            }
            catch(e){}
        }
        
        if (document.getElementById("homeBanner").value == "1")
	        document.getElementById("moreDiv").style.display = "block";
	    
	    //_doCheckAfterLoad();
    }
    catch(e){}
}

function _doCheckAfterLoad()
{
    try
    {
        if (afterLoadMenuID != 0 && afterLoadLanguageID != 0)
        {
            _doRequest(afterLoadMenuID, afterLoadTemplateID, afterLoadPageID, afterLoadLanguageID, afterLoadURL);
            
            afterLoadMenuID = 0;
			afterLoadTemplateID = 0;
			afterLoadPageID = '';
			afterLoadURL = '';
			afterLoadLanguageID = 0;
        }
    }
    catch(e){}
}
