/*
Object.prototype.isEmpty = function() {
    for (var prop in this) {
        if (this.hasOwnProperty(prop)) return false;
    }
    return true;
}

Object.prototype.notEmpty = function() {
    for (var prop in this) {
        if (this.hasOwnProperty(prop)) return true;
    }
    return false;
}
// when used this the there was a problem in j query
*/


//if(window.location.href.indexOf(host)!=0)alert("Change in HOST");
										  

function notEmpty(o){
    for (var prop in o) {
        if (o.hasOwnProperty(prop)) return true;
    }
    return false;
}

function isEmpty(o){
    for (var prop in o) {
        if (o.hasOwnProperty(prop)) return false;
    }
    return true;
}

function isEmail(address) 
{
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   return reg.test(address)
}

function nEmail(ref) 
{
	val = document.getElementById(ref).value
	var reg = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/;
	return !reg.test(val)
}
 
function nPhone(ref)
{
	val = document.getElementById(ref).value	
	var reg = /[0-9-()]$/
	return !reg.test(val)
}
function trimtext(itag)
{
	var tag = document.getElementsByTagName(itag);
	for(var i=0;i<tag.length;i++)
	{
		if(tag[i].type!='file')
			tag[i].trimText()
	}
}

function usernameValidity(src,len) 
{
	var noalpha = /^[A-Za-z_]*$/;
	
	if(!noalpha.test(src.value))
	{
		displayRed(1,src,'This field should be of alphabets mixed with underscore') 
		return;
	}
	else
		displayRed(0,src,'');
//	alert(!src.value.length>len)
	if(len && src.value.length<len)
		displayRed(!src.value.length<len,src,"This field should be more than "+len+" characters") 	
}

function isAlpha(src)
{
   var noalpha = /^[A-Za-z]*$/;
	return noalpha.test(src)
}

function isBox(src)
{
	var nobox = /^((?:[A-Za-z-'.,@:?!()$#/\\]+|&[^#])*&?)$/
	return nobox.test(nobox)	
}

function isAlphaSpace(src,len)
{
//	var cit=/^[a-z ]+$/i/;

//	displayRed(,src,'Value should be only of Alphabets and Space')
	var nov = !src.value.match(/^[a-z ]+$/i)
//	alert(nov)
	if(nov)
	{

		displayRed(1,src,'This field should be of alphabets and space') 
		return;
	}
	else
		displayRed(0,src,'');
//	alert(!src.value.length>len)
	if(len && src.value.length<len)
		displayRed(!src.value.length<len,src,"This field should be more than "+len+" characters") 	
}	
function emailValidity(src)
{				
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	displayRed(!reg.test(src.value),src,'Email should be in correct form') 
}

function phoneValidity(src)
{
	var pho=/^[0-9+]*$/;
	displayRed(!pho.test(src.value),src,'Phone number should be in correct form')
}

function mobileValidity(src)
{
	var mob=/^[0-9+]*$/;
	displayRed(!mob.test(src.value),src,'Mobile number should be in correct form')
}
function zipcodeValidity(src)
{
	var zipc=/^[0-9]*$/;
	displayRed(!zipc.test(src.value),src,'zip code should be in correct form')
}
function displayRed(flag,src,txt)
{
	if(flag)
	{
		eflag ++;
		document.getElementById(src.id+'err').innerHTML = txt;		
	}
	else
	{
		document.getElementById(src.id+'err').innerHTML = "";
		eflag-- 
	}
}	

function createAjax()
{
	var xt;
	xt = window.XMLHttpRequest ? new XMLHttpRequest() : ( window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP') : null)

	return xt;
}

function show(jax)
{
	var wini; wini = window.open('','');wini.document.write("<pre>"+jax.responseText); wini.document.close()
}

function trim(str, chars) {

    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
	
function checkphonevalidity(str)
{	
	var phon=/^[0-9]*$/;
	if(!phon.test(str))
	return str;
}

function checkemailvalidity(str)
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(!reg.test(str))
	return str;
}

function checkzipcodevalid(str)
{	
	var zip=/^[0-9a-zA-Z]*$/;
	if(!zip.test(str))
	return str;
}

function strip_tags(str)
{
	var re= /<\S[^><]*>/g
	str = str.replace(re, "")
	return str;
}	

function doSelect(oid,ids)
{
	var obj = document.getElementById(oid)
	for(var i=0;i<obj.options.length;i++)
		if(obj.options[i].value==ids)
			obj.selectedIndex = i;
}

function selectAllx(obj,ref)
{	
	var ch = document.getElementsByName(ref)	
	for(var i=0;i<ch.length;i++)
		ch[i].checked = obj.checked;
}

function selectAll(ref,mode)
{	
	var ch = document.getElementsByName(ref)	
	for(var i=0;i<ch.length;i++)
		ch[i].checked = mode;
}

function setSelection(nami,idx)
{
	var al = document.getElementById(nami)
	for(var i=0;i<al.length;i++)
		if(al[i].value==idx)
			al[i].selected = true
//	alert(i)
}

function setRadio(nami,idx)
{
	var al = document.getElementsByName(nami)
	for(var i=0;i<al.length;i++)
		if(al[i].value==idx)
			al[i].checked = true
}

function unSetRadio(nami)
{
	var al = document.getElementsByName(nami)
	for(var i=0;i<al.length;i++)
			al[i].checked = false
}

function getRadio(nami)
{
	var al = document.getElementsByName(nami)
	for(var i=0;i<al.length;i++)
			if(al[i].checked)return al[i].value
	return false;
}

function isSelected(ref)
{
	var ch = document.getElementsByName(ref)	
	for(var i=0;i<ch.length;i++)
		if(ch[i].checked)return true;
	return false;		
}

function getSelected(nami)
{
	var al = document.getElementsByName(nami)
	var str='';
	for(var i=0;i<al.length;i++)
		if(al[i].checked)
			str += al[i].value +','
			
	return str
}

function isAlphaSpace(src)
{
	var noalpha = /^[A-Za-z ]*$/;
	
	if(!noalpha.test(src))
		return false;
	else 
		return true;

}

function hideNote()
{
	if(document.getElementById('shownote'))
		document.getElementById('shownote').style.display='none'
}

function doAjax(query)
{
	var jax = createAjax();if(!jax)return;
	jax.open("GET",query)
	jax.onreadystatechange = function(){if(jax.readyState==4)xResponse(jax)}
	jax.send(null)
}
function xResponse(x)
{
	busy(0)
	if(x.responseText.indexOf('DONiZ') + 1)
		window.location.reload()
	else
		alert(x.responseText)
}

function doAjaxSync(query)
{
	var jax = createAjax();if(!jax)return;
	jax.open("GET",query,false)
	jax.send(null)

	busy(0)

	try{
	var obj = eval( "(" + jax.responseText + ")" )
	}catch(e){alert(trim(strip_tags(jax.responseText)));throw new Error("Stopa");}	

	if(obj.err)
	{
		alert(obj.err);
		throw new Error("Stopa");
	}
	return obj.avail
}


function deleteSelectedChecks(ref,box)
{
	if(!confirm("Are you sure you want to delete?"))return
		
	if(!isSelected(ref))
	{
		alert("Please select item(s) to delete");
		return;
	}
	
	var str = getSelected(ref)
	
	var param
	if(arguments.length==2)
		param = "command=commonclear&box="+box+"&eye="+str
	else if(arguments.length==3)
		param = "command=commonclear&box="+box+"&eye="+str+"&xid="+arguments[2]
	else { alert("Insfficient arguments"); return; }		
	jRequest(ajaxpath,param,false)	
}

function deleteSingle(ref,box)
{
	if(!confirm("Are you sure you want to delete?"))return
	var param
	if(arguments.length==2)
		param = "command=commonclear&box="+box+"&eye="+ref
	else if(arguments.length==3)
		param = "command=commonclear&box="+box+"&eye="+ref+'&xid='+arguments[2]
	
	jRequest(ajaxpath,param,false)
}

function deleteSelectedChecksDi(ref,box,box2,id1,id2)
{
	if(!confirm("Are you sure you want to delete?"))return
		
	if(!isSelected(ref))
	{
		alert("Please select item(s) to delete");
		return;
	}
	
var str = getSelected(ref)
jRequest(baseurl+"admin/ajax","command=commoncleardi&box="+box+"&eye="+str+"&box2="+box2+"&id1="+id1+"&id2="+id2,false)

}


function deleteSingleDi(id,box,box2,id1,id2)
{
	if(!confirm("Are you sure you want to delete?"))return		
	jRequest(baseurl+"admin/ajax","command=commoncleardi&box="+box+"&eye="+id+"&box2="+box2+"&id1="+id1+"&id2="+id2,false)
}

function deleteSelectedDi(ref,box1,box2,id1,id2)
{
	if(!confirm("Are you sure you want to delete?"))return
		
	if(!isSelected(ref))
	{
		alert("Please select item(s) to delete");
		return;
	}
	
var str = getSelected(ref)
jRequest(baseurl+"admin/ajax","command=deletedi&box1="+box1+"&eye="+str+"&box2="+box2+"&id1="+id1+"&id2="+id2,false)

}


/*
function deleteDi(id,box,box2,id1,id2)
{
	if(!confirm("Are you sure you want to delete?"))return		
	jRequest(baseurl+"admin/ajax","command=commoncleardi&box="+box+"&eye="+id+"&box2="+box2+"&id1="+id1+"&id2="+id2,false)
}
*/
function deleteDi(id,box1,box2,id1,id2)
{
	if(!confirm("Are you sure you want to delete?"))return		
	jRequest(baseurl+"admin/ajax","command=deletedi&box1="+box1+"&eye="+id+"&box2="+box2+"&id1="+id1+"&id2="+id2,false)
}
/*
function deleteSingleTri(id,box,box2,box3,id1,id2,id3)
{
	if(!confirm("Are you sure you want to delete?"))return		
	jRequest(baseurl+"admin/ajax","command=commoncleartri&box="+box+"&eye="+id+"&box2="+box2+"&box3="+box3+"&id1="+id1+"&id2="+id2+"&id3="+id3,false)
}
*/

function deleteTri(id,box1,box2,box3,id1,id2,id3)
{
	if(!confirm("Are you sure you want to delete?"))return		
	jRequest(baseurl+"admin/ajax","command=deletetri&box1="+box1+"&eye="+id+"&box2="+box2+"&box3="+box3+"&id1="+id1+"&id2="+id2+"&id3="+id3,false)
}

function deleteSelectedTri(ref,box1,box2,box3,id1,id2,id3)
{
	if(!confirm("Are you sure you want to delete?"))return
		
	if(!isSelected(ref))
	{
		alert("Please select item(s) to delete");
		return;
	}
	
var str = getSelected(ref)
jRequest(baseurl+"admin/ajax","command=deletetri&box1="+box1+"&eye="+str+"&box2="+box2+"&box3="+box3+"&id1="+id1+"&id2="+id2+"&id3="+id3,false)

}

function busy(mode)
{
	var bus = document.getElementById('processing')
	if(bus)
		if(mode)
			bus.style.visibility='visible'
		else
			bus.style.visibility='hidden'			
}

function busyx(mode,id)
{
	if(!busyx.prev)prev=null
	if(id) busyx.current = id
	
	if(prev)document.getElementById(prev).style.visibility = 'hidden'

	var bus = document.getElementById(busyx.current)

	if(bus)
		if(mode)
			bus.style.visibility='visible'
		else
			bus.style.visibility='hidden'			
}

function busyz(id,mode)
{
	var bus = document.getElementById(id)
	if(bus)
		if(mode)
			bus.style.visibility='visible'
		else
			bus.style.visibility='hidden'			
}


function c2d($dt)
{
	var a = $dt.split('-')
	return a[2]+'-'+a[1]+'-'+a[0]
}

function print_r(theObj){

  if(theObj.constructor == Array ||
     theObj.constructor == Object){
    document.write("<ul>")
    for(var p in theObj){
      if(theObj[p].constructor == Array||
         theObj[p].constructor == Object){
document.write("<li>["+p+"] => "+typeof(theObj)+"</li>");
        document.write("<ul>")
        print_r(theObj[p]);
        document.write("</ul>")
      } else {
document.write("<li>["+p+"] => "+theObj[p]+"</li>");
      }
    }
    document.write("</ul>")
  }
}

function getDays(fromdate,todate)
{
	fromdate = fromdate.split('-')
	todate = todate.split('-')
	var a = new Date(fromdate[0],fromdate[1]-1,fromdate[2]);			
	var d = new Date(todate[0],todate[1]-1,todate[2]);
	return  (d.getTime() - a.getTime())/86400000
}

function setLanguage(mode,lang)
{
	var loc =  window.location.href;
	if(loc.match(/\?/))
	{
		if(loc.match(/lang=[a-z][a-z]/))
			loc = loc.replace(/lang=[a-z][a-z]/,"lang="+lang)
		else loc = loc + "&lang="+lang				  
	}
	else
		loc = loc + "?lang="+lang				  

	window.location = loc
}

function jaxResponse(jax)
{
	if(jax.responseText.indexOf('bien') + 1)window.location.reload()
	else alert(strip_tags(jax.responseText))
}

function jsalert(str)
{
	alert(str)
	if(jsalert.arguments.length>1)
	{
		if(document.getElementsByName(jsalert.arguments[1])[0])
			document.getElementsByName(jsalert.arguments[1])[0].focus()
	}
	throw new Error('Stopa');
}

function getjsText(nami)
{
	var os = document.getElementsByName(nami)[0];
	if(os)
	{
		if(window.trim && (os.type!='file'))os.value = trim(os.value)
		return os.value
	}
	return null
}

function doProcessing(ref,mode)
{
	if(document.getElementById(ref))
	{
		if(mode)
			document.getElementById(ref).style.visibility='visible'
		else
			document.getElementById(ref).style.visibility='hidden'			
	}
}

function request(script,param)
{
	var jax = createAjax();if(!jax)return;
	jax.open("GET",script+".php?"+param,false)
	jax.send(null)
	return jax
}

function getid(ids) { return document.getElementById('ids') }

function jRequestI(args,param)
{
	var jax = createAjax();if(!jax)return;
	jax.open("POST",args,false)
	jax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	jax.send(param);
	if(jax.responseText.indexOf('bien')+1){busy(0);jsalert('Email already Exists')}
//	else jsalert(jax.responseText);
}

function jRequest(args,param,mode)
{
	var jax = createAjax();if(!jax)return;
	jax.open("POST",args,mode)
	jax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	if(mode)jax.onreadystatechange = function() { if(jax.readyState==4)jaxResponse(jax); }
	jax.send(param);
	if(!mode)jaxResponse(jax);
}

function jRequestCall(args,param,mode,callback)
{
	var jax = createAjax();if(!jax)return;
	jax.open("POST",args,mode)
	jax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	if(mode)jax.onreadystatechange = function() { if(jax.readyState==4)jRtr(jax,callback); }
	jax.send(param);
//	alert(jax.responseText)
	if(!mode)jRtr(jax,callback);
}

function jRequestBool(args,param,mode)
{
	var jax = createAjax();if(!jax)return;
	jax.open("POST",args,mode)
	jax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	if(mode)jax.onreadystatechange = function() { if(jax.readyState==4)jResponseBool(jax); }
	jax.send(param);
//	alert(jax.responseText);
	if(!mode)return isbien(jax.responseText)?false:strip_tags(jax.responseText);	
}

function jRtr(jax,callback)
{
//	alert(jax.responseText)
	if( (jax.responseText.indexOf('bien')+1) || (jax.responseText.indexOf('DONiZ')+1) )
		eval(callback+"('Registred successfully. Please check you mail to activate your account')")
	else
		eval(callback+"('Unable to process this request. Please try again later')")
}

function display(ref,mode)
{
	mode = mode ? 'inline' : 'none'
	document.getElementById(ref).style.display = mode
}

function displayd(ref,mode)
{
	mode = mode ? 'block' : 'none'
	document.getElementById(ref).style.display = mode
}


function nullThese(whose)
{
	var str = whose.split(',')
	for(i in str)
		if(document.getElementById(str[i]))
			document.getElementById(str[i]).value=''
}

function setThese(whose)
{
	var str = whose.split(',')
	for(var i=0;i<str.length;i+=2)
		if(document.getElementById(str[i]))
			document.getElementById(str[i]).value=str[i+1]
}


function setvalue(whose,ofwhat)
{
	document.getElementById(whose).value = ofwhat
}

function setvalueh(whose,ofwhat)
{
	document.getElementById(whose).innerHTML = ofwhat
}

function getvalueh(whose)
{
	return document.getElementById(whose).innerHTML 
}

function checkset(nami,err)
{
	var os = document.getElementsByName(nami)[0]
	
	if(window.trim)os.value = trim(os.value);
	
	if(os.value=='')
	{
		alert(err);
		os.focus();
		throw new Error('Stopa')
	}
}

function clearall(str)
{
	str = str.split(',')
	for(i in str)
		if(document.getElementById(str[i]))
			document.getElementById(str[i]).value=''
}

function isbien(str)
{
	str = str.replace(/[\x00-\x1f]/,'')
	if( (str.indexOf('bien')+1) || (str.indexOf('DONiZ')+1) ) return true;
	return false;
}

function getjsSelectedText(nami)
{
	var nami = document.getElementsByName(nami)[0];
	if(nami) return nami.options[nami.selectedIndex].value
	else return null
}

function setActivity(id,box)
{
	jRequest(baseurl+'admin/ajax/',"command=setactivity&id="+id+"&box="+box,false)
}

function setjsSelectedText(id,ref)
{
	var os = document.getElementById(ref)
	for(var i=0;i<os.options.length;i++)
		if(os.options[i].value==id)os.options.selectedIndex = i; 
}

function findAbsolutePosition(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
//returns an array
}

function makeParam(param)
{
	var str = param.split(',')
	var val='';
	val += str[0] + '=' + str[1];
	for(var i=2;i<str.length;i+=2)
		val += "&" + str[i] + '=' + document.getElementById(str[i+1]).value
	return val;	
}

function recaptcha(ref,url)
{
	document.getElementById(ref).src = url +  Math.floor(Math.random()*9000)+'/'	
}

function setjsDisable(flag,param)
{
	var str = param.split(',')
	for(var i=0;i<str.length;i++)
			document.getElementById(str[i]).disabled = flag
}

function helpThis()
{
//	alert('This will display the options and its usage in this page.\nThis has not yet been implemented.')	
	if(document.getElementById('helpdiv').style.display=='block')
		$('#helpdiv').hide(500);
	else $('#helpdiv').slideDown(500);	
}

 $(document).ready(function() {
   // put all your jQuery goodness in here.
   $('#helpdiv').click( function () {
								  	$(this).hide(500); 
									});
   
   $('#helpthis').click( function () {
								  	$(this).hide(500); 
									});
   
 });

function toggledisplay(src)
{
	if(document.getElementById(src).style.display=='block')
		$('#'+src).hide(500);
	else $('#'+src).show(500);
}

function subscribe_newsletter(src)
{
//	if(isthisso('name,Name,email,Email','Please fill both the fields'))return;

	if(getjsText('name')=='Name' || getjsText('name')=='')
	{
		showNote2('name','Please enter your name');
		return;
	}

	if(getjsText('email')=='Email' || getjsText('email')=='')
	{
		showNote2('email','Please enter your email');
		return;
	}

//	if(!isEmail(getjsText(src)))jsalert("Invalid email address",src)

	if(!isEmail(getjsText('email')))
	{
		showNote2('email','Invalid email address');
		return;
	}

	doProcessing('newsletterprocessing',1);
	var jax = request(base_url+'newsletter','command=subscribe&subemail='+getjsText(src)+"&subname="+getjsText('name'))
	doProcessing('newsletterprocessing',0);		

	if(jax.responseText.indexOf('emailinuse')+1)
	{
		if(confirm("Email address already in use\nClick Ok to resend subscription request to this email address"))
			re_subscribe_newsletter(src);
	}
	else if (jax.responseText.indexOf('Email address already in use')+1)
	{ 
		showNote2('email','Email already in use');
		
	}
	else alert(strip_tags(jax.responseText))

	setThese('name,Name,email,Email')}

function re_subscribe_newsletter(src)
{
	if(!isEmail(getjsText(src)))
		jsalert("'Invalid email address",src)
	doProcessing('newsletterprocessing',1);
	var jax = request(base_url+'newsletter','command=resubscribe&subemail='+getjsText(src))
	doProcessing('newsletterprocessing',0);		
	alert(strip_tags(jax.responseText))
	setThese('name,Name,email,Email');
}

function statusSelectedChecks(ref,box,bool)
{
	if(!confirm("Are you sure you want to change the status?"))return
		
	if(!isSelected(ref))
	{
		alert("Please select item(s) to change status");
		return;
	}
	
	var str = getSelected(ref)

	jRequest(baseurl+"ajax.php","command=commonstatus&box="+box+"&eye="+str+'&bool='+bool,false)
}

function commonStatusOne(id,box)
{
	jRequest(baseurl+"ajax.php","command=commonStatusOne&box="+box+"&eye="+id,false)
}

defaultCaption = function(src,txt)
{
//	alert(event.type);return;
	if(!(typeof(src)=='string' || typeof(src)=='object')) { alert("Source should either be string or an object"); return; }	
	if(typeof(src)=='string')src = document.getElementById(src)
	
	src.value = trim(src.value)
	if(src.value == txt){ src.value='';return}
	else if(!src.value.length)src.value = txt
}

function jsdebug()
{
	this.jd = document.createElement('div')
	this.jd.style.width = '200px'
	this.jd.style.height = '100px'
	this.jd.style.backgroundColor = 'yellow'
	this.jd.style.color = 'black'
	this.jd.style.position = 'absolute'
	this.jd.style.left = '0px'
	this.jd.style.width = '0px'
	this.jd.style.display = 'none'
	this.show = function(mode)
	{
		if(mode)this.style.display = 'block'
		else this.style.display = 'none'
	}
	this.timi=null
	this.add = function() { if(document.body) { document.body.appendChild(this); this.timi=null; } }
	this.start = function()
	{
//		this.timi = setInterval('jsdebug.add()',500);
	}
}

//var a = new jsdebug();
//a.start();

	jd = document.createElement('div')
	jd.style.width = '200px'
	jd.style.height = '0px'
	jd.style.backgroundColor = 'yellow'
	jd.style.padding = '10px'
	jd.style.color = 'black'
	jd.style.position = 'absolute'
	jd.style.left = '0px'
	jd.style.top = '0px'
//	jd.style.display = 'none'
	jd.style.display = 'block'	
//	document.body.appendChild(jd)
	
	zzz = function(e)
	{
		var os = getEventSource(e)
		jd.innerHTML = os.window.document
	}

function isthisso(str)
{
	if(arguments.length==2 && (typeof(arguments[arguments.length-1])=='string') )msg = arguments[arguments.length-1];
	else msg = "Please fill in the required fields";
	
	str = str.split(',')
	for(var i=0;i<str.length;i+=2)
	{
		document.getElementById(str[i]).value = trim(document.getElementById(str[i]).value)
		if(document.getElementById(str[i]).value == str[i+1]) { alert(msg); return true; }
	}
	return false;
}

function addslashes (str) {
    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
}

function stripslashes (str) {
    return (str+'').replace(/\\(.?)/g, function (s, n1) {
        switch (n1) {
            case '\\':
                return '\\';
            case '0':
                return '\0';
            case '':
                return '';
            default:
                return n1;
        }
    });
}

function getEventSource(e) {
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
	return targ;
}

function jPreset(args,param,mode)
{
	var jax = createAjax();if(!jax)return;
	jax.open("POST",args,mode)
	jax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	if(mode)jax.onreadystatechange = function() { if(jax.readyState==4)jResponseBool(jax); }		
	return jax;
}

function jsonRequest(args,param,mode)
{
	var jax = jPreset(args,param,mode)
	jax.send(param)
	try{ return eval('('+jax.responseText+')') }
	catch(e) {
		if(arguments.length>3)jsalert(trim(strip_tags(jax.responseText)))
		else jsalert("Unable to process the response code");
	}
}

function jResponseBool(jax)
{
	alert(jax.responseText)
}

function htmlspecialchars_decode (string, quote_style) {
    // Convert special HTML entities back to characters  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/htmlspecialchars_decode
    // +   original by: Mirek Slugen
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Mateusz "loonquawl" Zalega
    // +      input by: ReverseSyntax
    // +      input by: Slawomir Kaniecki
    // +      input by: Scott Cariss
    // +      input by: Francois
    // +   bugfixed by: Onno Marsman
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // -    depends on: get_html_translation_table
    // *     example 1: htmlspecialchars_decode("<p>this -&gt; &quot;</p>", 'ENT_NOQUOTES');
    // *     returns 1: '<p>this -> &quot;</p>'
    // *     example 2: htmlspecialchars_decode("&amp;quot;");
    // *     returns 2: '&quot;'
    var hash_map = {}, symbol = '', tmp_str = '', entity = '';
    tmp_str = string.toString();
    
    if (false === (hash_map = this.get_html_translation_table('HTML_SPECIALCHARS', quote_style))) {
        return false;
    }

    for (symbol in hash_map) {
        entity  = hash_map[symbol];
        tmp_str = tmp_str.split(entity).join(symbol);
    }
    tmp_str = tmp_str.split('&#039;').join("'");
    
    return tmp_str;
	
}

function urlencode (str) {
    // URL-encodes string  
    // 
    // version: 910.813
    // discuss at: http://phpjs.org/functions/urlencode
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // +      input by: Ratheous
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Joris
    // %          note 1: This reflects PHP 5.3/6.0+ behavior
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
    var hexStr = function (dec) {
        return '%' + (dec < 16 ? '0' : '') + dec.toString(16).toUpperCase();
    };

    var ret = '',
            unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
    str = (str+'').toString();

    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) {
            ret += ch;
        }
        else {
            var code = str.charCodeAt(i);
            if (0xD800 <= code && code <= 0xDBFF) { // High surrogate (could change last hex to 0xDB7F to treat high private surrogates as single characters); https://developer.mozilla.org/index.php?title=en/Core_JavaScript_1.5_Reference/Global_Objects/String/charCodeAt
                ret += ((code - 0xD800) * 0x400) + (str.charCodeAt(i+1) - 0xDC00) + 0x10000;
                i++; // skip the next one as we just retrieved it as a low surrogate
            }
            // We never come across a low surrogate because we skip them, unless invalid
            // Reserved assumed to be in UTF-8, as in PHP
            else if (code === 32) {
                ret += '+'; // %20 in rawurlencode
            }
            else if (code < 128) { // 1 byte
                ret += hexStr(code);
            }
            else if (code >= 128 && code < 2048) { // 2 bytes
                ret += hexStr((code >> 6) | 0xC0);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 2048) { // 3 bytes (code < 65536)
                ret += hexStr((code >> 12) | 0xE0);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
        }
    }
    return ret;
}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) + "; path=/";
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return null;
}

function savePosition(box)
{
	var sel
	if(arguments.length==2)sel = arguments[arguments.length-1]
	else sel='checks[]'	
	var sa = document.getElementsByName(sel)
	if(!sa.length) { alert('No items Found'); return; }
	var str
	if(arguments.length==3)
		str = "command=setposition&yesphotos=true&box="+box+"&pos=";
	else
		str = "command=setposition&box="+box+"&pos=";
	var s=''
	for(var i=0;i<sa.length;i++)
		s+=sa[i].value+','
	s = rtrim(s,',')
	
	
	jRequest(baseurl+'cms-admin/ajax.php',str+s,false);
}

function notMultiselect(nami)
{
	var os = document.getElementById(nami)

	for(var i=0;i<os.options.length;i++)
		if(os.options[i].selected)return false;

	if(arguments.length>1)alert(arguments[1])
	os.focus();
	return true;
}

function getjsMultiselect(nami)
{
	var os = document.getElementById(nami)

	var str=''
	for(var i=0;i<os.options.length;i++)
		if(os.options[i].selected)
			str+= os.options[i].value+','
	return str
}

function resetMultiselect(nami)
{
	var os = document.getElementById(nami)
	for(var i=0;i<os.options.length;i++)
		os.options[i].selected=false
}

function resetSelect(nami)
{
	document.getElementById(nami).selectedIndex = 0
}

