function $(id)
{
	return document.getElementById(id);
}

function open_password_recovery(lang)
{
	jsPopup("password.php?lang=" + lang, 450, 250);
}

function jsGetSMSLength(tPt, lPt)
{
	var i=0,c=-1,d=-6,l=160;
 	do {
		d = tPt.value.indexOf("%IMEI%", d+6);
		c++;
	} while (d!=-1);
	l-= c*9;
	c = -1;
	d = -6;
 	do {
		d = tPt.value.indexOf("%CODE%", d+6);
		c++;
	} while (d!=-1);
	l-= c*44;
	c = -1;
	d = -5;
 	do {
		d = tPt.value.indexOf("%FAQ%", d+5);
		c++;
	} while (d!=-1);
	l-= c*15;
	for (; i<tPt.value.length; i++) {
		if ((tPt.value.charAt(i) == "\r") && (i+1<tPt.value.length) && (tPt.value.charAt(i+1)=="\n")) i++;
		l--;
	}
	lPt.value = l.toString();
	lPt.style.color = ( l<0 ? "#CC0000" : "#000000" );
}

function jsCheckCustomForm()
{
	var f = document.custom;
	if (f.lOk.value < 0 || f.lErr.value < 0) {
		alert(GetLanguage("CHECK_SMS_LENGTH"));
		return false;
	}
	return true;
}

function jsPopup(MyURL, MyWidth, MyHeight)
{
  var left=(screen.width-MyWidth)/2;
  var top=(screen.height-MyHeight)/2;
  window.open(MyURL,"_blank","top="+top+",left="+left+",width="+MyWidth+",height="+MyHeight+",toolbar=0,location=0,directories=0,status=0,scrollbars=0,resizable=0,copyhistory=0,menuBar=0");
  return false;
}

function jsShowComment(oId)
{
	with (document.getElementById(oId))
	{
		style.display = ( (style.display == "none") ? "" : "none");
	}
}

function jsCheckIMEI(IMEI, Checksum) // Must be a string
{
	var i, Sum, Tmp;
	var rExp = new RegExp("^[0-9]{15}$", "");
	if (! rExp.test(IMEI)) return false;
	if (! Checksum) return true;
	for (i=0, Sum=0;  i<14; i++)
	{
		Tmp = (IMEI.charAt(i) * ((i%2) + 1));
		Sum += ((Tmp % 10) + parseInt(Tmp / 10));
	}
	return (((10 - (Sum % 10)) % 10) == IMEI.charAt(14));
}

function jsCheckProviderID(ProviderID)
{
	return new RegExp('^[0-9a-z]{4,5}\\-[0-9a-z]{7}$', 'i').test(ProviderID);
}

function jsCheck_MEP_PRD(Type, Str)
{
	return new RegExp('^' + Type + '\\-[0-9]{5}\\-[0-9]{3}$', '').test(Str);
}

function jsCheckEmail(Email) // Must be a string
{
	var i, r;
	var x = Email.split("@");
	if (x.length != 2) return false;
	r = new RegExp("^[0-9a-zA-Z_\\-\\.]+$", "");
	if (! r.test(x[0])) return false;
	var y = x[1].split(".");
	if (y.length < 2) return false;
	for (i=0; i<y.length; i++)
	{
		r = new RegExp("^[0-9a-zA-Z\\-]{2,}$", "");
		if (! r.test(y[i])) return false;
		if (y[i].charAt(0)=='-' || y[i].charAt(y[i].length-1)=='-') return false;
	}
	return true;
}

function jsTrim(str) 
{ 
	return str.replace(/(^\s*)|(\s*$)/g, ""); 
}

function jsXmlEntities(str)
{
	return str.replace("<", "&lt;").replace(">", "&gt;").replace("&", "&amp;").replace("'", "&apos;").replace('"', "&quot;");
}

function jsNl2Br(str)
{
	return str.replace(/[\r\n]/g, "<br />");
}

function getAbsoluteLeft(obj)
{
	var pos = 0;
	do {
		pos += obj.offsetLeft;
		if (document.all && obj.nodeName == "FIELDSET") pos += 2; // IE bug ?
		obj = obj.offsetParent;
	}
	while (obj != null);
	return pos;
}

function getAbsoluteTop(obj)
{
	var pos = 0;
	do {
		pos += obj.offsetTop;
		obj = obj.offsetParent;
	}
	while (obj != null);
	return pos;
}

function rewriteCssProp(style)
{
	if (style == "float") return (document.all ? "styleFloat" : "cssFloat");
	return style.replace(/\-[a-z]/g, function (s) { return s.charAt(1).toUpperCase(); } );
}

function getCssProp(object, style)
{
	if (window.getComputedStyle)
	{
		return window.getComputedStyle(object, null).getPropertyValue(style);
	}
	if (object.currentStyle)
	{
		return eval("object.currentStyle." + rewriteCssProp(style));
	}
	return null;
}

function setCssProp(object, style, value)
{
	object.style[rewriteCssProp(style)] = value;
}

function stopEventPropagation(e)
{
	if (e && e.stopPropagation) e.stopPropagation();
	if (window.event) event.cancelBubble = true;
}

function setMobilePhotoCoords(obj)
{
	if (obj)
	{
		var IMEI = document.getElementById("IMEI");
		setCssProp(obj, "top", getAbsoluteTop(IMEI) + "px");
		setCssProp(obj, "left", (getAbsoluteLeft(IMEI) + parseInt(getCssProp(IMEI, "width")) + 25) + "px");
	}
}

function removeMobilePhoto()
{
	var Photo = document.getElementById("MobilePhoto");

	if (Photo)
	{
		Photo.parentNode.removeChild(Photo);
	}	
}

function loadMobilePhoto(id)
{
	if (parseInt(id))
	{
		// Remove former image (to avoid confusion)
		removeMobilePhoto();
		
		// Create a new image
		var newImage = new Image();

		// Format new image
		setCssProp(newImage, "position", "absolute");
		setCssProp(newImage, "z-index", 1);
		setCssProp(newImage, "border", "0px");
		setCssProp(newImage, "width", "112px");
		setCssProp(newImage, "height", "112px");

		// Show image once loading finished
		newImage.onload = function ()
		{
			// Remove former image (in case of quick scroll)
			removeMobilePhoto();

			// Set new image id
			newImage.id = "MobilePhoto";

			// Set new div coords
			setMobilePhotoCoords(newImage);
	
			// Append to document body
			document.body.appendChild(newImage);
			
			// Set new coords on window resize
			window.onresize = function ()
			{
				setMobilePhotoCoords(document.getElementById("MobilePhoto"));
			}
		}
		
		// Set image source
		newImage.src = "/photo.php?ID=" + id;
	}
	else
	{
		removeMobilePhoto();
	}
}

function setOpacity(obj, value)
{
	setCssProp(obj, "opacity", value);
	setCssProp(obj, "-moz-opacity", value);
	setCssProp(obj, "filter", "alpha(opacity=" + parseInt(value * 100) + ")");
}

function decreaseOpacity(obj)
{
	if (obj.timeout) clearTimeout(obj.timeout);
	setOpacity(obj, obj.opacity -= 0.1);
	if (obj.opacity > 0.3) obj.timeout = setTimeout(function() { decreaseOpacity(obj); }, 30);
	else obj.timeout = null;
}

function increaseOpacity(obj, start)
{
	if (obj.timeout) clearTimeout(obj.timeout);
	setOpacity(obj, obj.opacity += 0.1);
	if (obj.opacity < 1.0) obj.timeout = setTimeout(function() { increaseOpacity(obj); }, 30);
	else obj.timeout = null;
}

function ImageMouseOver(img)
{
	img.opacity = 1.0;
	decreaseOpacity(img);
}

function ImageMouseOut(img)
{
	increaseOpacity(img);
}

function AutoSelect(Select)
{
	if (Select.options.length == 2)
	{
		Select.selectedIndex = 1;
		Select.onchange();
	}
}

/* Drop-down menu */

var menuDiv = null;
var menuTyp = null;
var menuOpa = null;
var timeOut = null;

var menuDivs = new Array();

function buildMenu(type)
{
	if (! menuDivs[type])
	{
		/* Menu box */
		var div = document.createElement("div");
		div.className = "menu";
		
		/* Title */
		var sdiv = document.createElement("div");
		sdiv.className = "menutitle";
		sdiv.appendChild(document.createTextNode(GetLanguage("MENU_" + type)));
		div.appendChild(sdiv);
		
		/* Sections */
		var sections = new Array("imei", "cable", "file", "spyphone");
		
		for (var section in sections)
		{
			/* Menu line */
			sdiv = document.createElement("div");
			sdiv.className = "menuline";
			
			/* Icon */
			var simg = document.createElement("img");
			setCssProp(simg, "width", "24px");
			setCssProp(simg, "height", "24px");
			setCssProp(simg, "margin-right", "10px");
			setCssProp(simg, "vertical-align", "middle");
			simg.setAttribute("src", "/img/menu-" + sections[section] + ".gif");
			sdiv.appendChild(simg);
			
			/* Legend + stats */
			sdiv.appendChild(document.createTextNode(GetLanguage("MENU_" + sections[section]) + " (" + Stats[type][sections[section]] + ")"));

			/* Url */
			sdiv.url = "/" + type + "-" + sections[section] + ".php";
			
			/* Mouse / click functions */
			sdiv.onmouseover = function() { setCssProp(this, "background-color", "#FFFFFF"); }
			sdiv.onmouseout = function() { setCssProp(this, "background-color", ""); }
			sdiv.onclick = function() { self.location = this.url; }
			
			/* Add to main div */
			div.appendChild(sdiv);
		}
		
		document.body.appendChild(div);
		menuDivs[type] = div;
	}
	
	return menuDivs[type];
}

function mouseOverMenu(type)
{
	if (timeOut)
	{
		clearTimeout(timeOut);
		timeOut = null;
	}

	openMenu(type);
}

function mouseOutMenu(type)
{
	timeOut = setTimeout(function() { closeMenu(type); }, 50);
}

function setMenuOpacity()
{
	if (menuDiv)
	{
		setOpacity(menuDiv, menuOpa += 0.1);
		
		if (menuOpa < 0.9)
			setTimeout(setMenuOpacity, 30);
	}
}

function openMenu(type)
{
	if (menuDiv && (menuTyp != type))
	{
		closeMenu(menuTyp);
	}

	if (! menuDiv)
	{
		menuDiv = buildMenu(type);
		menuTyp = type;
		
		var obj = getObject(type + "Pos");

		setCssProp(menuDiv, "left", getAbsoluteLeft(obj) + "px");
		setCssProp(menuDiv, "top", getAbsoluteTop(obj) + "px");

		menuDiv.onmouseover = function() { mouseOverMenu(type); }
		menuDiv.onmouseout = function() { mouseOutMenu(type); }

		setOpacity(menuDiv, menuOpa = 0.1);
		setMenuOpacity();
		
		setCssProp(menuDiv, "visibility", "visible");
	}
}

function closeMenu(type)
{
	if (menuDiv && (menuTyp == type))
	{
		setCssProp(menuDiv, "visibility", "hidden");
		menuDiv = null;
	}
	timeOut = null;
}

/* Preload images */

function preloadMenuImages()
{
	var Images = new Array("imei", "cable", "file", "spyphone", "gradient");
	
	for (var Key in Images)
	{
		new Image().src = Images[Key];
	}
}

function preloadCurrencyImages()
{
	/* Drop-down rollover arrow */
	new Image().src = "/img/arrow-on.gif";

	/* Currency logos */
	for (var Key in Currencies)
	{
		new Image().src = "/logo/currency/" + Key + ".gif";

        }
}

var slide = {

	hover: false,
	position: 0,
	
	start: function()
	{
		try
		{
			slide.outer = document.getElementById('slideOuter');
			slide.inner = document.getElementById('slideInner');

			slide.outerWidth = slide.outer.offsetWidth;
			slide.innerWidth = slide.inner.offsetWidth;
			
			slide.inner.onmouseover = function() { slide.hover = true; }
			slide.inner.onmouseout = function() { slide.hover = false; }

			slide.move();
		}
		catch (e) {}
	},
	
	move: function()
	{
		try
		{
			if (! slide.hover)
			{
				if (--slide.position < - slide.innerWidth) slide.position = slide.outerWidth;
				slide.inner.style.marginLeft = slide.position + 'px';
			}
			setTimeout(slide.move, 20);
		}
		catch (e) {}
	}
};

function jsFormatNumber(number, decimals)
{
	number = Math.round(number * Math.pow(10, decimals));
	if (isNaN(number)) number = 0;
	number = String(number);
	while (number.length < 3) number = '0' + number;
	return number.substring(0, number.length - 2) + '.' + number.substring(number.length - 2, number.length);
}

function jsUpdatePaymentFee(value)
{
	$('payment_fee').innerHTML = $(value).innerHTML;
	jsComputePayment();
}

function jsComputePayment()
{
	//var credits = parseFloat(parseInt($('Credits').value));
	var credits = $('Credits').value;
        var payment_fee = parseFloat($('payment_fee').innerHTML) / 100.0;

	var total_price = credits;
	var fee_amount = total_price * payment_fee;
	var total_to_pay = total_price * (1.0 + payment_fee);
	
	$('total_price' ).innerHTML = jsFormatNumber(total_price,  2);
	$('fee_amount'  ).innerHTML = jsFormatNumber(fee_amount,   2);
	$('total_to_pay').innerHTML = jsFormatNumber(total_to_pay, 2);
}

function calendarSelected(cal, date)
{
	cal.target.value = date;
}
function calendarCloseHandler(cal)
{
	cal.hide();
}
function showCalendar(obj, target)
{
  // construct a calendar giving only the "selected" handler.
  var cal = new Calendar(0, null, calendarSelected, calendarCloseHandler);
  
  cal.target = document.getElementById(target);

  // hide week numbers
  cal.weekNumbers = false;

  // We want some dates to be disabled; see function isDisabled above
  cal.setDateFormat("%Y-%m-%d");

  // this call must be the last as it might use data initialized above; if
  // we specify a parent, as opposite to the "showCalendar" function above,
  // then we create a flat calendar -- not popup.  Hidden, though, but...
  cal.create();

  // ... we can show it here.
  cal.showAtElement(obj, "Br");
}

function checkAllViewed(checked)
{
	var inputs = document.getElementsByTagName("input");
	for (var i in inputs)
	{
		if ( (inputs[i].type == "checkbox") && (inputs[i].name.substring(0,6) == "Viewed") )
		{
			inputs[i].checked = checked;
		}
	}
}

function trustGuardClick(a)
{
	var nonwin = navigator.appName != 'Microsoft Internet Explorer' ? 'yes' : 'no';
	window.open(a.href,'welcome','location='+nonwin+',scrollbars=yes,width=517,height='+screen.availHeight+',menubar=no,toolbar=no');	
}
