// PHP.js start - http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_is_array/
function is_array( mixed_var ) {
    return ( mixed_var instanceof Array );
}
function str_replace(search, replace, subject) {
    var f = search, r = replace, s = subject;
    var ra = is_array(r), sa = is_array(s), f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
    while (j = 0, i--) {
        while (s[i] = s[i].split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
    };
    return sa ? s : s[0];
}
// PHP.JS end

// JS funcs start
function hScroll(objId, sval) {
	var theObj = document.getElementById(objId);
	sval=parseInt(sval);
	if (theObj) {
		var units = (typeof theObj.style.left == "string") ? "px" : 0 
		var currLeft = parseInt(theObj.style.left);
		var currWidth;
		if (document.defaultView) {
			currWidth = parseInt(document.defaultView.getComputedStyle(theObj, "").getPropertyValue("width"));
        } else if(theObj.currentStyle) {
			currWidth = parseInt(theObj.clientWidth);
		}
		mkScroll=true;
		if (currLeft>=0 && sval>0) mkScroll=false;
		if (currLeft<=(0-currWidth+460) && sval<0) mkScroll=false;
		if (mkScroll) {
			theObj.style.left = currLeft + sval + units;
		}
	}
	hScrollDelay = setTimeout('hScroll("'+objId+'", "'+sval+'")', 20);
}
function hScrollStop() {
	clearTimeout(hScrollDelay);
}
function sendMail( data ) {
	var rev = '', j = 0;
	var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var o1, o2, o3, h1, h2, h3, h4, bits, i = ac = 0, dec = "", tmp_arr = [];
	for ( j = data.length-1; j >= 0; j-- ) rev += (data.charAt(j)=="." ? "+" : data.charAt(j));
	data=rev;
	do {
		h1 = b64.indexOf(data.charAt(i++));
		h2 = b64.indexOf(data.charAt(i++));
		h3 = b64.indexOf(data.charAt(i++));
		h4 = b64.indexOf(data.charAt(i++));
		bits = h1<<18 | h2<<12 | h3<<6 | h4;
		o1 = bits>>16 & 0xff;
		o2 = bits>>8 & 0xff;
		o3 = bits & 0xff;
		if (h3 == 64) {
			tmp_arr[ac++] = String.fromCharCode(o1);
		} else if (h4 == 64) {
			tmp_arr[ac++] = String.fromCharCode(o1, o2);
		} else {
			tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
		}
	} while (i < data.length);
	dec = tmp_arr.join('');
	document.location.href='m'+'a'+'i'+'l'+'t'+'o'+':'+dec;
}
// JS funcs end

var Url = {
    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },
    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },
    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    },
    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while ( i < utftext.length ) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }
        return string;
    }
}

function CheckPrivateTaxID(obj) {
	var error = true;
	var data = String(obj.value);
	var newData = "";
	var patt = /[0-9]/;
	for (i=0; i<data.length; i++) if (patt.test(data.charAt(i))) newData+=data.charAt(i);
	data=newData;
	if (data.length==10) {
		var sum = parseInt( parseInt(data.substr(0, 1)) + 2 * parseInt(data.substr(1, 1)) + 3 * parseInt(data.substr(2, 1)) + 4 * parseInt(data.substr(3, 1)) + 5 * parseInt(data.substr(4, 1)) + 6 * parseInt(data.substr(5, 1)) + 7 * parseInt(data.substr(6, 1)) + 8 * parseInt(data.substr(7, 1)) + 9 * parseInt(data.substr(8, 1)) );
		var m = parseInt(sum % 11);
		if (m<10 && parseInt(data.substr(9, 1))==m) error=false;
	}
	return !error;
}
/*
function CheckCompanyTaxID(obj) {
	var error = true;
	var data = String(obj.value);
	var newData = "";
	var patt = /[0-9]/;
	for (i=0; i<data.length; i++) if (patt.test(data.charAt(i)) && newData.length<11) newData+=data.charAt(i);
	data=newData;
	if (data.length==11) {
		var sum = parseInt(
			9 * parseInt(data.substr(0, 1))
			+ 7 * parseInt(data.substr(1, 1))
			+ 3 * parseInt(data.substr(2, 1))
			+ 1 * parseInt(data.substr(3, 1))
			+ 9 * parseInt(data.substr(4, 1))
			+ 7 * parseInt(data.substr(5, 1))
			+ 3 * parseInt(data.substr(6, 1))
		);
		var str = String(sum);
		var chkDigit = 10 - parseInt(str.charAt(str.length-1));
		if (parseInt(data.substr(7, 1))==chkDigit) error=false;
	}
	return !error;
}
*/
function CheckCompanyTaxID(obj) {
	var error = true;
	var data = String(obj.value);
	var newData = "";
	var patt = /[0-9]/;
	for (i=0; i<data.length; i++) if (patt.test(data.charAt(i)) && newData.length<11) newData+=data.charAt(i);
	data=newData;
	if (data.length==11) {
		var sum = parseInt(
			9 * parseInt(data.substr(0, 1))
			+ 7 * parseInt(data.substr(1, 1))
			+ 3 * parseInt(data.substr(2, 1))
			+ 1 * parseInt(data.substr(3, 1))
			+ 9 * parseInt(data.substr(4, 1))
			+ 7 * parseInt(data.substr(5, 1))
			+ 3 * parseInt(data.substr(6, 1))
			+ 1 * parseInt(data.substr(7, 1))
		);
		if (sum % 10 == 0 && parseInt(data.substr(0, 1))!=0) error=false;
	}
	return !error;
}
