﻿if (typeof XMLHttpRequest == "undefined") {
	XMLHttpRequest = function () {
		try{ return new ActiveXObject("Microsoft.XMLHTTP"); }
		catch(e){ return null; }
	}
}

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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

///////////////////////////////////////////////////////////
function gotoURL(_url, blank){
	if(blank){
		var _target = "_blank";
	}else{
		var _target = "_self";
	}
	window.open(_url, _target);
}

///////////////////////////////////////////////////////////

function toogleList(_id){
	var _obj = document.getElementById(_id);
	if( _obj ){
		if(_obj.style.display == "block"){
			_obj.style.display = "none"
		}else{
			_obj.style.display = "block";
		}
	}
}

///////////////////////////////////////////////////////////

function cardval(s) {
	if (s.length <= 8) { return true; }
	
	// remove non-numerics
	var v = "0123456789";
	var w = "";
	for (var i = 0; i < s.length; i++) {
		x = s.charAt(i);
		if (v.indexOf(x, 0) != -1) {
			w += x;
		}
	}
	
	// validate number
	j = w.length / 2;
	if ((j < 6.5) || (j > 8) || (j == 7)) { return false; }
	k = Math.floor(j);
	m = Math.ceil(j) - k;
	c = 0;
	
	for (var i = 0; i < k; i++) {
		a = w.charAt(i * 2 + m) * 2;
		c += (a > 9) ? Math.floor((a / 10) + (a % 10)) : a;
	}
	
	for (var i = 0; i < (k + m); i++) {
		c += w.charAt(i * 2 + 1 - m) * 1;
	}
	
	return ((c % 10) == 0);
}

///////////////////////////////////////////////////////////

function checkidnum(idnum) {
	try {
		idnum = String(idnum);
	    while (idnum.length < 9) {
	        idnum = "0" + idnum;
	    }
	    idnum1 = idnum.substr(0,1) * 1;
	    idnum2 = idnum.substr(1,1) * 2;
	    idnum3 = idnum.substr(2,1) * 1;
	    idnum4 = idnum.substr(3,1) * 2;
	    idnum5 = idnum.substr(4,1) * 1;
	    idnum6 = idnum.substr(5,1) * 2;
	    idnum7 = idnum.substr(6,1) * 1;
	    idnum8 = idnum.substr(7,1) * 2;
	    idnum9 = idnum.substr(8,1) * 1;
	 
	    if (idnum1 > 9) { idnum1 = (idnum1 % 10) + 1; }
	    if (idnum2 > 9) { idnum2 = (idnum2 % 10) + 1; }
	    if (idnum3 > 9) { idnum3 = (idnum3 % 10) + 1; }
	    if (idnum4 > 9) { idnum4 = (idnum4 % 10) + 1; }
	    if (idnum5 > 9) { idnum5 = (idnum5 % 10) + 1; }
	    if (idnum6 > 9) { idnum6 = (idnum6 % 10) + 1; }
	    if (idnum7 > 9) { idnum7 = (idnum7 % 10) + 1; }
	    if (idnum8 > 9) { idnum8 = (idnum8 % 10) + 1; }
	    if (idnum9 > 9) { idnum9 = (idnum9 % 10) + 1; }
	 
	    var sumval = idnum1 + idnum2 + idnum3 + idnum4 + idnum5 + idnum6 + idnum7 + idnum8 + idnum9;
	 
	    sumval = sumval % 10;
	    if (sumval > 0){
	        //alert("תעודת הזהות שגוייה");
	        return false;
	    }
		return true;
	} catch (e) {
        return false;
	}
}

////////////////////////////////////////////////////////////

function parseBoolean( val ){
	if ( arguments.length == 0 )return false;
	if ( typeof(val) == "boolean" ) return val;
	if ( val == null ) return false ;
	if ( typeof(val) == "string" )
	{
		if ( val == "" ) return false;
		if ( val.toUpperCase() == "NULL" ) return false;
		if ( val == "undefined" ) return false ;
		if ( val.toUpperCase() == "FALSE" ) return false;
		if ( val.toUpperCase() == "TRUE" ) return true;
	}
	if ( parseInt(val) > 0 )
		return true;
	else
		return false;	
}

////////////////////////////////////////////////////////////

function checkEmail(strEmail){
	return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})$/.test(strEmail);
}

////////////////////////////////////////////////////////////

function checkField(_obj) {
	var _tmp = '';
	try {
		if (parseBoolean(_obj.getAttribute("validate"))) {
			if (!parseBoolean(_obj.getAttribute("empty")) && !trim(_obj.value)) {
				alert('שדה "' + _obj.getAttribute("desc") + '" לא יכול להיות ריק');
				_obj.focus();
				return false;
			} else if (trim(_obj.value)) {
				switch(_obj.getAttribute("cont")) {
					case 'int':
						if (isNaN(_obj.value)) {
							alert('שדה "' + _obj.getAttribute("desc") + '" חייב להיות מספר');
							_obj.select();
							return false;
						}
						break;
					case 'email':
						if (!checkEmail(_obj.value)) {
							alert('שדה "' + _obj.getAttribute("desc") + '" חייב להיות כתובת אימייל חוקי');
							_obj.select();
							return false;
						}
						break;
					case 'id':
						if (!checkidnum(_obj.value)) {
							alert('שדה "' + _obj.getAttribute("desc") + '" חייב להיות מספר ת.ז. חוקי');
							_obj.select();
							return false;
						}
						break;
					case 'card':
						if (!cardval(_obj.value)) {
							alert('שדה "' + _obj.getAttribute("desc") + '" חייב להיות מספר כרטיס אשראי חוקי');
							_obj.select();
							return false;
						}
						break;
				}
			}
		}
		return true;
	} catch (e) {
		alert(e.description + " " + _obj.getAttribute("desc"));
		return false;
	}
}

////////////////////////////////////////////////////////////

function validateForm(fObj) {
	try {
		var f = fObj;
		for (var i in formFields) {
			try {
				if (!checkField(f[i])) {
					return false;
				}
			} catch (e) {}
		}
		return true;
	} catch (e) {
		alert(e.description);
		return false;
	}
}

function validateRegForm(_form){
	var _bpass = validateForm(_form);
	if (_bpass && (_form.userPass.value == _form.userLogin.value)) {
		alert("Field '" + _form.userPass.getAttribute("desc") + "' can`t be equal to '" + _form.userLogin.getAttribute("desc") + "'");
		_bpass = false;
	}
	if (_bpass && (_form.userPass.value != _form.userPassV.value)) {
		alert("Field '" + _form.userPass.getAttribute("desc") + "' not equal to '" + _form.userPassV.getAttribute("desc") + "'");
		_bpass = false;
	}
	return _bpass;
}

function DeleteDoc(){
	return confirm("Delete document?");
}

function rollover(ev,newcolor, url, blank){
	if( document.all ){
		var obj = ev.srcElement;
	}else{
		var obj = ev.target;
	}
	if( !obj ) return;
	if( !newcolor ) newcolor = '#A9A9A9';
	var oldcolor = obj.style.color;
	obj.style.cursor = "pointer";
	obj.style.color = newcolor;
	obj.onmouseout = function(){
		obj.style.color = oldcolor;
		window.status = "";
	}
	if(url){
		var statline = "";
		if(blank) statline += "New Window: ";
		statline += url;
		window.status = statline;
		obj.onclick = function(){
			gotoURL(url,blank);
			return false;
		}
	}
}

function trim(s){
	return s.replace(/^\s*(.+?)\s*$/, "$1");
}

function putFlash(file, width, height, fields, style, id){
	var code = '';
	if( !fields){
		var fields = [];
	}
	if( !fields["quality"] ){fields["quality"] = "high";}
	if( !fields["wmode"] ){fields["wmode"] = "transparent";}
	if( !fields["menu"] ){fields["menu"] = "false";}
	
	code += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="' + width + '" height="' + height + '" style="' + style + '" VIEWASTEXT id="' + id + '">';
	code += '<param name="movie" value="' + file + '">';
	for(var key in fields){
		code += '<param name="' + key + '" value="' + fields[key] + '">';
	}
	code += '<embed src="' + file + '" width="' + width + '" height="' + height + '" style="' + style + '" id="' + id + '"';
	for(var key in fields){
		code += ' ' + key + '="' + fields[key] + '"';
	}
	code += '></embed>';
	code += '</object>';
	document.write(code);
}
function $(id){
	var obj = document.getElementById(id);
	if( obj ){
		return obj;
	}
	return null;
}

function checkDomainString(str){
	str = trim(String(str).toLowerCase());
	return /^([a-z0-9]{1})([a-z0-9\-]{1,62})([a-z0-9]{1})$/.test(str);
}

function checkIdnDomainString(str){
	str = trim(String(str).toLowerCase());
	return /^([אבגדהוזחטיכלמנסעפצקרשתךםןףץ]{1})([אבגדהוזחטיכלמנסעפצקרשתךםןףץ0-9\-]{0,40})([אבגדהוזחטיכלמנסעפצקרשתךםןףץ0-9]{1})$/.test(str);
}

function fixDomainString(str){
	var result = trim(String(str).toLowerCase());
	result = result.replace(/[^a-z0-9\-]+/gi, '');
	result = result.replace(/[\-]+/gi, '-');
	result = result.replace(/^[\-]+/gi, '');
	result = result.replace(/[\-]+$/gi, '');
	return result;
}

function fixIdnDomainString(str){
	var result = trim(String(str).toLowerCase());
	result = result.replace(/[^אבגדהוזחטיכלמנסעפצקרשתךםןףץ0-9\-]+/gi, '');
	result = result.replace(/[\-]+/gi, '-');
	result = result.replace(/^[\-]+/gi, '');
	result = result.replace(/[\-]+$/gi, '');
	return result;
}

function infoWindow(header, txt, x, y, width){
	var x = x || 1;
	var y = y || 0;
	var width = width || 300;
	var obj = $('infoWindow');
	if( !obj ){
		obj = document.createElement("DIV");
		obj.id = 'infoWindow';
		obj.style.position = 'absolute';
		obj.style.visibility = 'hidden';
		obj.className = 'infoWindow';
		document.body.appendChild(obj);
	}
	with( [] ){
		push('<table border="0" bordercolor="red" width="' + width + '" height="1" cellspacing="0" cellpadding="0">');
			push('<tr><td>');
				push('<table border="0" bordercolor="red" width="100%" height="100%" cellspacing="0" cellpadding="0">');
					push('<tr>');
						push('<td class="white12bold" style="padding:3px 10px 3px 5px;border-bottom:#FFFFFF solid 1px;">' + header + '</td>');
						push('<td class="white12bold" style="width:1px; padding:3px 5px 3px 10px;border-bottom:#FFFFFF solid 1px; cursor:pointer;" onclick="$(\'infoWindow\').style.display=\'none\'">X</td>');
					push('</tr>');
				push('</table>');
			push('</td></tr>');
			push('<tr><td class="white12" style="padding:10px;">' + unescape(txt) + '</td></tr>');
		push('</table>');

		obj.innerHTML = join('');
	}
	obj.style.display = 'block';
	obj.style.top = y;
	obj.style.left = x;
	obj.style.clip = 'rect(auto, auto, 0px, auto)';
	obj.style.visibility = 'visible';
	setTimeout('clipInfoWindow()', 100);
}

function slideInfoWindow(){
	var obj = $('infoWindow');
	if( obj ){
		obj.style.top = obj.offsetTop * 1 + Math.ceil(obj.offsetHeight/100) + 1;
		if( obj.offsetTop < document.body.scrollTop){
			setTimeout("slideInfoWindow()", 100);
		}
	}
}

function clipInfoWindow(val) {
	var val = val || 0;
	var obj = $('infoWindow');
	if (obj) {
		obj.style.clip = 'rect(auto, auto, ' + val + 'px, auto)';
		if (val < obj.offsetHeight) {
			setTimeout(function () {
				clipInfoWindow(val * 1 + 5);
			}, 1);
		}
	}
}

function checkInput (type, e) {
	if (BrowserDetect.browser == 'Explorer') {
		//return true;
		type = type || 'eng';
		e = e || event;
		types = type.toLowerCase().split(',');
		var allowedKey = false;
		var errorMessage = "";
		//alert(e.keyCode);
		for (var t in types) {
			if (allowedKey) { break; }
			if (types[t] == 'eng') {
				errorMessage = "בשדה זה יש אפשרות להכניס רק אותיות באנגלית";
				if (((e.keyCode >= 97) && (e.keyCode <= 122))
				 || ((e.keyCode >= 65) && (e.keyCode <= 90))
				 || (e.keyCode == 45) || (e.keyCode == 46)) {
					allowedKey = true;
				}
			} else if (types[t] == 'num') {
				if (!trim(errorMessage)) {
					errorMessage = "בשדה זה יש אפשרות להכניס רק מספרים";
				}
				if ((e.keyCode >= 48) && (e.keyCode <= 57)) {
					allowedKey = true;
				}
			} else if (types[t] == 'space') {
				if (e.keyCode == 32) {
					allowedKey = true;
				}
			} else if (types[t] == 'email') {
				//if (e.keyCode == 64) {
					allowedKey = true;
				//}
			}
		}

		if (!allowedKey) {
			errorMessage = errorMessage.replace(/\,$/, "");
			alert(errorMessage);
			e.keyCode = 0;
			return false;
		}
	}
	return true;
}

function checkEmailAvailability(email) {
	if (!trim(email)) { return false; }
	var objHTTP = new XMLHttpRequest();
	if (!objHTTP) { return false; }
	var result = false;
	
	var url = 'checkEmailAvailability.asp?email=' + encodeURI(email);
	objHTTP.open("GET", url, false);
	objHTTP.send(null);
	if (!parseInt(objHTTP.responseText)) {
		result = true;
	}
	return result;
}


// Domain
function domain_clearName(str) {
	var result = trim(String(str).toLowerCase());
	result = result.replace(/^http(s)*\:\/\//, '');
	result = result.replace(/^www\./, '');
	result = result.replace(/\..*$/, '');
	return result;
}

function domain_checkName(str) {
	str = trim(String(str).toLowerCase());
	var lang = false;
	if (trim(str)) {
		if (/^xn--([a-z0-9]{1})([a-z0-9\-]{1,62})([a-z0-9]{1})$/.test(str)) {
			lang = 'idn';
		} else if (/^([a-z0-9]{1})([a-z0-9\-]{1,62})([a-z0-9]{1})$/.test(str)) {
			lang = 'en';
		} else if (/^([אבגדהוזחטיכלמנסעפצקרשתךםןףץ]{1})([אבגדהוזחטיכלמנסעפצקרשתךםןףץ0-9\-]{0,40})([אבגדהוזחטיכלמנסעפצקרשתךםןףץ0-9]{1})$/.test(str)) {
			lang = 'he';
		}
	}
	return lang;
}

function domain_fixName(str, lang) {
	var result = trim(String(str).toLowerCase());
	if (lang == 'idn') {
		result = result.replace(/[^a-z0-9\-]+/gi, '');
		result = result.replace(/^[\-]+/gi, '');
		result = result.replace(/[\-]+$/gi, '');
	} else if (lang == 'en') {
		result = result.replace(/[^a-z0-9\-]+/gi, '');
		result = result.replace(/[\-]+/gi, '-');
		result = result.replace(/^[\-]+/gi, '');
		result = result.replace(/[\-]+$/gi, '');
	} else if (lang == 'he') {
		result = result.replace(/[^אבגדהוזחטיכלמנסעפצקרשתךםןףץ0-9\-]+/gi, '');
		result = result.replace(/[\-]+/gi, '-');
		result = result.replace(/^[\-]+/gi, '');
		result = result.replace(/[\-]+$/gi, '');
	}
	return result;
}

