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=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,left=150')
}
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;
}

//************ LANGUAGE  *****************

function setLanguage(lID)
{
	//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);
}


  function hideCol(column, hideVal) {

    var row = 0;
    var displayStyle;

    while (document.getElementById('r'+row+'c'+column)) {
      var displayStyle = (hideVal!=true)? 'inline' : 'none' ;
      document.getElementById('r'+row+'c'+column).style.display = displayStyle;
      row++;
    }

  }
  
  function poorman_toggle(id){
		var tr = document.getElementById(id);
		if (tr==null) { return; }
		var bExpand = tr.style.display == '';
		tr.style.display = (bExpand ? 'none' : '');
	}

  function hideRow(arg) { 
  	var img = document.getElementById("moreimg").src;
  	
  	if(img.indexOf("more.png")>0) {
  		img = img.replace("more.png","more1.png");
  	}
  	else{
  		if(img.indexOf("more1.png")>0) {
  			img = img.replace("more1.png","more.png");  			
  		}
  	}
  	
  	document.getElementById("moreimg").src=img;
  
  	var ar = eval(arg);
  
  	var i =0;
  	for(i=0;i<ar.length;i++){
  	 	poorman_toggle('row_'+ar[i]);
  	}
  	poorman_toggle('interdivs');
  	poorman_toggle('alldrdown');
 
  }
  
/*Java Script of flexy tariffs pages*/
  
var cellId;             // cell where should calculation result should appear
var clicked = false;    // if the calculation window is open
var calcflag =  false;  // if should calculate tmf for chosen percents
 
function requestdata(Id,lng)
{   
  cellId = Id;

  var arr = new Array();
 
      arr[0]=document.getElementById("cug").value;
      arr[1]=document.getElementById("pstn").value;
      arr[2]=document.getElementById("off").value;
      arr[3]=document.getElementById("onn").value;
	  arr[4]=lng;
      
   if(arr[0]!="" && arr[1]!="" && arr[2]!="" && arr[3]!="" && arr[4]!=""){ 
     // if(!clicked)
        loadXMLDoc("content/flexy_tariffs/calc_tmf.php?obj="+arr);  
  
      //if(calcflag){  
     //  calculateInvoice("calc_invoice"); 
         
 //  }
   }
   else document.getElementById("calculation").innerHTML=""; 
}

function checkBeforeSubmit(){  
	
   if(document.getElementById("cug").value=="" || document.getElementById("pstn").value=="" || document.getElementById("off").value=="" || document.getElementById("onn").value==""){ 
   alert("Please select the tariffs for each destination."); 
	return false;
   }
   else 
	return true;
}

function loadXMLDoc(url) {
	var dt = new Date;

	url = url + "&rnd=" + dt.getTime();  
 
    if (window.XMLHttpRequest) {    
        req = new XMLHttpRequest(); 
         if (req) { 
         req.onreadystatechange = processReqChange; 
         req.open("GET", url, true);
         req.send(null);
         }
       
    } else if (window.ActiveXObject) {     
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {     
          req.onreadystatechange = processReqChange; 
            req.open("GET", url, true); 
            req.send();
        }    
       }
}
  
function processReqChange() {   
     if (req.readyState==4 ){ 
	    if (req.status == 200) {  
	    	
	     	document.getElementById(cellId).innerHTML=req.responseText;
	    
        } else {
            // alert("fail");
       }
     }
}
 
function calcPerecent(){
 
var cug = document.getElementById("cug_ext").value; 
var pstn = document.getElementById("pstn_ext").value;
var off = document.getElementById("off_ext").value;
var onn = document.getElementById("onn_ext").value;
var sum = parseInt(cug)+parseInt(pstn)+parseInt(onn)+parseInt(off); 
 
if(sum!=100){  
	//if(sum>100) 
	//alert("The total must be equal to 100%"); 
    document.getElementById("statusBar").innerHTML=parseInt(sum);  
  return false; 
}  
else{  
 document.getElementById("statusBar").innerHTML= parseInt(sum);		 
   return true;
}
}

function checkCalculationForm(lng){
	
	 var regexdigit = /^[0-9]+$/;
	 var arr = new Array();
 
      arr[0]=document.getElementById("cug").value;
      arr[1]=document.getElementById("pstn").value;
      arr[2]=document.getElementById("off").value;
      arr[3]=document.getElementById("onn").value;
	if(arr[0]=="" || arr[1]=="" || arr[2]=="" || arr[3]=="") { 
		alert("Please select the tariffs for each destination."); 
		return;
	}       
    if(document.getElementById("lines").value=="" || document.getElementById("lines").value <1 ||	(document.getElementById("lines").value).search(regexdigit) == -1){
		document.getElementById("lines").focus();
		alert("Please enter the number of lines.");
		return;
	} 	

	if(document.getElementById("duration").value=="" || document.getElementById("duration").value <1 || document.getElementById("duration").value.search(regexdigit) == -1 || document.getElementById("duration").value>1440){
		 document.getElementById("duration").focus();
		alert("Please enter the estimated daily airtime to be consumed per line. It must be a whole number between 1 and 1440.");
		return;
	}
     var flag = calcPerecent();
	 if (document.getElementById("statusBar").innerHTML == "0"){
			alert("Please indicate the airtime distribution based on destinations.");  return false; 
			}else{
			if(flag) {calculateInvoice("calc_invoice",lng); calcflag = true;}
			if(!flag){alert("Please redistribute the airtime so that the total equals to 100%.");  return false;}
		}
}

function showExtendedContent(lng){

	if(!checkBeforeSubmit()) return false;
	var hcal = document.getElementById('Hide_the_calculation').value;
	var cal = document.getElementById('Calculate').value;
	cellId = "ext_content";
	 if(!clicked){  
	  loadXMLDoc("content/flexy_tariffs/extend.php?param=1&lng="+lng);  
	  document.getElementById("ext_link").innerHTML="<a href='#' onclick='showExtendedContent("+lng+")'>"+hcal+"</a>"; 
	 // document.getElementById("calculation").innerHTML="";  
	   clicked = true; 
	 }
	  else{ 
     document.getElementById("ext_link").innerHTML="<a href='#' onclick='showExtendedContent("+lng+")'>"+cal+"</a> ";  
	  document.getElementById(cellId).innerHTML="";  
	 clicked=false;calcflag = false;
	 requestdata("calculation",lng);
	  }
}
 
function calculateInvoice(id,lng){
  cellId = id;    
  
  var arr = new Array();
      arr[0]=document.getElementById("cug").value;
      arr[1]=document.getElementById("pstn").value;
      arr[2]=document.getElementById("off").value;
      arr[3]=document.getElementById("onn").value;
      
 
      arr[4]=document.getElementById("cug_ext").value;
      arr[5]=document.getElementById("onn_ext").value;
      arr[6]=document.getElementById("pstn_ext").value;
      arr[7]=document.getElementById("off_ext").value;    
      
 
      arr[8]=document.getElementById("lines").value;
      arr[9]=document.getElementById("duration").value;
	  arr[10]=lng;
  
    loadXMLDoc("content/flexy_tariffs/calc_invoice.php?obj="+arr);  
 
}
 
function carpeGetElementById(element)
{
	if (document.getElementById) element = document.getElementById(element);
	else if (document.all) element = document.all[element];
	else element = null;
	return element;
}
// carpeLeft: Cross-browser version of "element.style.left"
function carpeLeft(elmnt, pos)
{
	if (!(elmnt = carpeGetElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.left) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.left = pos + 'px';
		else {
			pos = parseInt(elmnt.style.left);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelLeft) {
		if (typeof(pos) == 'number') elmnt.style.pixelLeft = pos;
		else pos = elmnt.style.pixelLeft;
	}
	return pos;
}
// carpeTop: Cross-browser version of "element.style.top"
function carpeTop(elmnt, pos)
{
	if (!(elmnt = carpeGetElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.top) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.top = pos + 'px';
		else {
			pos = parseInt(elmnt.style.top);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelTop) {
		if (typeof(pos) == 'number') elmnt.style.pixelTop = pos;
		else pos = elmnt.style.pixelTop;
	}
	return pos;
}
 
function moveSlider(evnt)
{
	var evnt = (!evnt) ? window.event : evnt;  
	if (mouseover) {  
		x = pxLeft + evnt.screenX - xCoord  
		y = pxTop + evnt.screenY - yCoord  
		if (x > xMax) x = xMax  
		if (x < 0) x = 0  
		if (y > yMax) y = yMax  
		if (y < 0) y = 0 
		carpeLeft(sliderObj.id, x)   
		carpeTop(sliderObj.id, y)  
		sliderVal = x + y  
		sliderPos = (sliderObj.pxLen / sliderObj.valCount) * Math.round(sliderObj.valCount * sliderVal / sliderObj.pxLen)
		v = Math.round((sliderPos * sliderObj.scale + sliderObj.fromVal) *  
			Math.pow(10, displayObj.dec)) / Math.pow(10, displayObj.dec)
		displayObj.value = v  
		calcPerecent();
		return false
	}
	return
}
 
function slide(evnt, orientation, length, from, to, count, decimals, display)
{
	if (!evnt) evnt = window.event;
	sliderObj = (evnt.target) ? evnt.target : evnt.srcElement;  
	sliderObj.pxLen = length  
	sliderObj.valCount = count ? count - 1 : length  
	displayObj = carpeGetElementById(display)  
	displayObj.dec = decimals  
	sliderObj.scale = (to - from) / length 
	if (orientation == 'horizontal') {  
		sliderObj.fromVal = from
		xMax = length
		yMax = 0
	}
	if (orientation == 'vertical') {  
		sliderObj.fromVal = to
		xMax = 0
		yMax = length
		sliderObj.scale = -sliderObj.scale 
	}
	pxLeft = carpeLeft(sliderObj.id)  
	pxTop  = carpeTop(sliderObj.id)  
	xCoord = evnt.screenX  
	yCoord = evnt.screenY  
	mouseover = true
	document.onmousemove = moveSlider  
	document.onmouseup = sliderMouseUp  
}
 
function sliderMouseUp()
{
	mouseover = false   
	v = (displayObj.value) ? displayObj.value : 0  
	pos = (v - sliderObj.fromVal)/(sliderObj.scale)  
	if (yMax == 0) carpeLeft(sliderObj.id, pos)  
	if (xMax == 0) carpeTop(sliderObj.id, pos)  
	if (document.removeEventListener) {  
		document.removeEventListener('mousemove', moveSlider)
		document.removeEventListener('mouseup', sliderMouseUp)
	}
	else if (document.detachEvent) {  
		document.detachEvent('onmousemove', moveSlider)
		document.detachEvent('onmouseup', sliderMouseUp)
	}
}
  /*end of Java Script of flexy tariffs pages*/