///////////////////////////////////
///////// CONSTANTS   /////////////
///////////////////////////////////
var tmp_string = location.href;
var GLOBAL_URL = '';
if (tmp_string.indexOf('www') !== -1) {
    GLOBAL_URL = url_www;
}else{
    GLOBAL_URL = url_http;
}

///////////////////////////////////
///////// ERRORS @ INFO ///////////
///////////////////////////////////
var AJAX_ERROR_1 = 'An error occurred while trying to access PHP script with AJAX request.';
var AJAX_ERROR_2 = 'Your browser does not support AJAX technology.';
var AJAX_ERROR_3 = 'You are on '+url_www+'. Should be on '+url_http+' address';

var GLOBAL_INFO_1= 'Following error occurred: ';

var LOADING_TEXT = 'Nalagam..';

///////////////////////////////////
/////// COMMON FUNCTIONS //////////
///////////////////////////////////
function redirect(link){
	location.href = link;
}

function redirectDueToError(link,interval){
	if (typeof(this.time) === 'undefined'){
		this.time = interval;
	}

	if (this.time === 0){
		this.time = interval;
		location.href = link;
	}else{
		this.time = this.time-1;
		var spantime = document.getElementById('timespan');
		spantime.innerHTML = this.time;
	}
}

function showError(message){
	if (showerrors){
		alert(message);
	}
}

function information(message){
	alert(message);
}

function sendRequest(url, function_name){
	var http_request = false;
  	if (window.XMLHttpRequest){
    	http_request = new XMLHttpRequest();
  	}else if (window.ActiveXObject){
	  	try{
			http_request = new ActiveXObject('Msxml2.XMLHTTP');
     	}catch (e){
			 try{
				 http_request = new ActiveXObject('Microsoft.XMLHTTP');
        	}catch (e) {}
     	}
  	}

  	if (!http_request){
	  	showError(AJAX_ERROR_2);
    	return false;
  	}

  	http_request.onreadystatechange = function() { eval(function_name)(http_request); };

    url = GLOBAL_URL+url;
  	if (add_token === true){
  		token = document.getElementById('token').value;
  		url   = url+'&token='+token;
  	}

  	try{
  		http_request.open('GET', url, true);
  	}catch(ex){
		showError(AJAX_ERROR_3);
	}

    //http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset:UTF-8');
  	http_request.send(null);
  	if (debug !== false){
		location.href=url;
  	}
  	setLoading('show');
}

// RM25022007: Global error handler. This error handler can only be used on IE@FIREFOX
var errorHandler = function(msg, url, linenumber){
 	showError("Error: " + msg + " for " + url + " at " + linenumber);
};
window.onerror = errorHandler;

// RM25022007: Check the request which was called from javascript. When status is done, it returns XML which was sent from PHP
function checkHttpRequest(request){
	switch(request.readyState)
        {
        case 0: // Uninitialized
            break;
        case 1: // Loading
            break;
        case 2: // Loaded
            break;
        case 3: // Interactive
            break;
        case 4: // Done!
             if (request.status == 200) {
                setLoading('hide');
             	return true;
             }else{
                setLoading('hide', 'Napaka');
             	return 'error';
             }
             break;
        default:
             break;
        }
    return false;
}

// RM25022007: Gets the reference to HTML object
function getElementByID(name){
	object = document.getElementById(name);
	if (object !== null){
		return object;
	}else{
		return false;
	}
}

// RM25022007: Gets the URL paramater.
// Note: First parameter has to have a & char before name (example: index.php?&variable), otherwise script can't read it
function getURLParam(strParamName){
	var strReturn = "";
  	var strHref = window.location.href;
 	if ( strHref.indexOf("&") > -1 ){
    	var strQueryString = strHref.substr(strHref.indexOf("&")).toLowerCase();
    	var aQueryString = strQueryString.split("&");
    	for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      		if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
        		strReturn = aParam[1];
        		break;
      		}
    	}
 	 }
  	return strReturn;
}

function isInteger (s){
	var i;

	if (isEmpty(s)){
		if (isInteger.arguments.length == 1) { return 0; }
		else{
			return (isInteger.arguments[1] === true);
		}
	}

	for (i = 0; i < s.length; i++){
		var c = s.charAt(i);
	 	if (!isDigit(c)) { return false; }
	}
	return true;
}

function isEmpty(s){
 	return ((s === null) || (s.length === 0));
}

function isDigit (c){
	return ((c >= "0") && (c <= "9"));
}

// RM13032007 Source: http://www.quirksmode.org/js/detect.html
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function addEvent( obj, type, fn ) {
	if ( obj.attachEvent ) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );};
		obj.attachEvent( 'on'+type, obj[type+fn] );
	}else{
		obj.addEventListener( type, fn, false );
	}
}

function removeEvent( obj, type, fn ) {
	if ( obj.detachEvent ) {
		obj.detachEvent( 'on'+type, obj[type+fn] );
		obj[type+fn] = null;
	}else{
		obj.removeEventListener( type, fn, false );
	}
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;  if(!d) d=document;
	if((p=n.indexOf("?"))>0&&parent.frames.length){
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all) x=d.all[n];
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers(){
	var i,p,v,obj,args=MM_showHideLayers.arguments;
    for (i=0; i<(args.length-2); i+=3)
    	if ((obj=MM_findObj(args[i]))!=null){
			v=args[i+2];
       		if (obj.style){
				obj=obj.style;
				v=(v=='show')?'visible':(v=='hide')?'hidden':v;
	    	}
       		obj.visibility=v;
	 	}
}

function MM_openBrWindow(theURL,winName,features){
	window.open(theURL,winName,features);
}

function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function getInnerWidth(){
	if (self.innerWidth){
		frameWidth  = self.innerWidth;
		frameHeight = self.innerHeight;
	}else if (document.documentElement && document.documentElement.clientWidth){
		frameWidth  = document.documentElement.clientWidth;
		frameHeight = document.documentElement.clientHeight;
	}else if (document.body){
		frameWidth  = document.body.clientWidth;
		frameHeight = document.body.clientHeight;
	}else return;
	return frameWidth;
}

function setTargetBlank(object){
    object.target='_blank';
}

function setLoading(mode, text){
    var lo = getElementByID('lo');
    if (lo === false) return;

    //RM09062007 If text is not define, use default
	if (typeof text == "undefined") {
	    text = LOADING_TEXT;
	}

    if (mode === 'show'){
        lo.style.display = '';
    }else{
        lo.style.display = 'none';
    }

    lo.innerHTML = text;
}