﻿//=========================================================================================
//============= This file was created by Sebastian Pederiva ===============================
//============= Only can be modified under my authorization ===============================
//=========================================================================================
dom1 = document.getElementById;
ns4 = document.layers;
ns6 = (navigator.userAgent.indexOf('Netscape6') != -1);
ie4 = (navigator.appVersion.indexOf('MSIE 4.') != -1);
ie = (navigator.appVersion.indexOf('MSIE') != -1);
mac = (navigator.appVersion.indexOf('Macintosh') != -1);

var x = 0;
var y = 0;
var scrollX = 0;
var scrollY = 0;

//============================ Waiting for Load the Page ==================================
doBeforeLoad()

function doBeforeLoad() {
	var tmpFrame;
	tmpFrame = "<IFRAME id=\"FRAMECover\" class=\"ClassCover\">&nbsp;</IFRAME>";

	document.write(tmpFrame);

	var tmpDIV;
	//tmpDIV = "<HTML><BODY><DIV id=\"ClassDIVCover\" class=\"ClassDIVCover\">Loading...</DIV></BODY></HTML>";

	tmpDIV = "";
	

	document.write(tmpDIV)
}

function removeCover() {
	try {
		document.getElementById("FRAMECover").style.display = "none";
		document.getElementById("ClassDIVCover").style.display = "none";
	}
	catch (e) {
		return;
	}
}

function bodyInit() {
	//if (typeof (initBreadCrumbs) != 'undefined')
	//	initBreadCrumbs();

	if (typeof (addCheckChangesEvent) != 'undefined')
		addCheckChangesEvent();

	if (typeof (init) != 'undefined')
		init();
}
//=========================================================================================

//=========================================================================================
//================================= PopulateSelect ========================================
//=========================================================================================
// Example 1
// populateSelect( [Select Object Name], [Array Name], [Value] )

// Example 2
// populateSelect( [Select Object Name], [Array Name (without prefix arr_], [Value], [Parent Value], [Lang], [Function Name] )
function populateSelect(objSelect, varArray, selectedValue, parentValue, langId, runAfterLoad, overrideAddOption, overrideDoPopulate, overrideVarArray, idToIgnore) {
	var javaScriptURL = null;

	if (typeof (varArray) == 'string' && typeof (langId) != 'undefined' && langId != '') {
		javaScriptURL = fileServerJS + '/JS_' + varArray + ((typeof (parentValue) != 'undefined' && parentValue != null && parentValue != '') ? '_' + parentValue.toString() : '') + "_" + langId + ".js"

		if (typeof (overrideVarArray) != 'undefined' && overrideVarArray != null)
			varArray = overrideVarArray;
		else
			varArray = 'arr_' + varArray + ((typeof (parentValue) != 'undefined' && parentValue != null && parentValue != '') ? '_' + parentValue.toString() : '')

		var isLoaded = false;
		try {
			varArray = eval(varArray);
			isLoaded = true;
		}
		catch (e) {
			isLoaded = false;
		}
	}
	//debugger
	if (javaScriptURL != null && !isLoaded) {
		scriptElementAdd(objSelect, varArray, selectedValue, javaScriptURL, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore)
	}
	else if (runAfterLoad != null && typeof (runAfterLoad) != 'undefined') {
		scriptElementIsLoaded(null, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate);
		try {
			runAfterLoad(varArray)
		}
		catch (e) {
			throw (e)
		}
	}
	else {
		doPopulate(objSelect, varArray, selectedValue, overrideAddOption, overrideDoPopulate, idToIgnore)
	}
}

function doPopulate(objSelect, varArray, selectedValue, overrideAddOption, overrideDoPopulate, idToIgnore) {
	if (objSelect.getAttribute('bpopulated') != null && typeof (objSelect.getAttribute('bpopulated')) != 'undefined' && objSelect.getAttribute('bpopulated') == 'false')
		objSelect.setAttribute('bpopulated', 'true');

	if (overrideDoPopulate != null && typeof (overrideDoPopulate) != 'undefined') {
		overrideDoPopulate(objSelect, varArray, selectedValue, idToIgnore)
	}
	else {
		if (typeof (objSelect) == 'object') {
			var isSelected = false;
			if (varArray) {
			    for (var ii = 0; ii < varArray.length; ii++) {
					if (varArray[ii]) {
						isSelected = false;
						if (selectedValue && String(selectedValue) != '' && varArray[ii][0] && selectedValue == varArray[ii][0]) {
							isSelected = true;
						}
						if (String(selectedValue) == '' && ii == 0) {
							isSelected = true;
						}

						addOption(objSelect, varArray[ii], overrideAddOption, isSelected);
					}
				}
			}
		}
	}

	//alert('bp in doPopulate = ' + objSelect.bpopulated + '\nobj: ' + objSelect.name)
	bindJQDDLAfterPopulate();
	return true;
}

function addOption(objSelect, arrayElement, overrideAddOption, isSelected) {
	if (overrideAddOption != null && typeof (overrideAddOption) != 'undefined') {
		overrideAddOption(objSelect, arrayElement, isSelected);
	}
	else {
		try {
			objSelect.options.length++;
			objSelect.options[objSelect.options.length - 1].value = arrayElement[0];
			objSelect.options[objSelect.options.length - 1].text = arrayElement[1].replace(/^\s+|\s+$/g, '');
			if (typeof (arrayElement[2]) != 'undefined')
				objSelect.options[objSelect.options.length - 1].id = arrayElement[2];

			if (isSelected == true) {
				objSelect.options[objSelect.options.length - 1].selected = true;
			}
		}
		catch (e) {
			var oSelect = document.createElement('option');
			oSelect.value = arrayElement[0];
			oSelect.innerHTML = escapeHTML(arrayElement[1]);

			if (isSelected == true) {
				oSelect.selected = true;
			}

			if (typeof (arrayElement[2]) != 'undefined') oSelect.id = arrayElement[2];

			objSelect.appendChild(oSelect);

			oSelect = null;
		}
	}

	return true;
}

function groupDoPopulate(objSelect, varArray, selectedValue, idToIgnore) {
	var oGroup = null;
	var oSelect = null;

	for (var ii = 0; ii < varArray.length; ii++) {
		if (varArray[ii][2] == '1') {
			if (varArray[ii][3] != idToIgnore) {
				if (oGroup != null)
					objSelect.appendChild(oGroup);

				oGroup = document.createElement('optgroup');
				oGroup.label = varArray[ii][1];
			}
		}
		else {
			if (varArray[ii][3] != idToIgnore) {
				oSelect = document.createElement('option');
				oSelect.value = varArray[ii][0];
				oSelect.innerHTML = varArray[ii][1];

				var isSelected = false;
				if (selectedValue == varArray[ii][0] && typeof (selectedValue) != 'undefined' && selectedValue != null && String(selectedValue) != '') {
					oSelect.selected = true;
				}
				if (selectedValue && String(selectedValue) == '1' && ii == 0) {
					isSelected = true;
				}

				if (oGroup != null)
					oGroup.appendChild(oSelect);
			}
		}
	}

	try {
		objSelect.appendChild(oGroup);
	}
	catch (e)
	{ }
}

function scriptElementAdd(objSelect, varArray, selectedValue, javaScriptURL, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore) {
	var scriptElement = document.createElement("script");
	scriptElement.src = javaScriptURL;
	scriptElement.type = "text/javascript";

	if (document.all)
		scriptElement.onreadystatechange = function() { scriptOnReadyStateChange(this, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore) };
	else
		scriptElement.onload = function() { scriptOnload(this, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore) }

	try {
		document.getElementsByTagName("head")[0].appendChild(scriptElement);
	}
	catch (e) {
		document.documentElement.appendChild(scriptElement);
	}
}

function scriptOnload(obj, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore) { 
	scriptElementIsLoaded(obj, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore)
}

function scriptOnReadyStateChange(obj, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore) {
	if (obj.readyState == 'loaded' || obj.readyState == 'complete') {
		scriptElementIsLoaded(obj, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore)
	}
}

function scriptElementIsLoaded(obj, objSelect, varArray, selectedValue, runAfterLoad, overrideAddOption, overrideDoPopulate, idToIgnore) {
	var objVarArray;
	try {
		objVarArray = eval(varArray);
	}
	catch (e) {
		return;
	}

	if (objSelect != null)
		doPopulate(objSelect, objVarArray, selectedValue, overrideAddOption, overrideDoPopulate, idToIgnore)

	if (runAfterLoad != null && typeof (runAfterLoad) != 'undefined') {
		try {
			runAfterLoad(objVarArray)
		}
		catch (e) {
			throw (e)
		}
	}
}


function removeAllSelectChildrens(obj) {
	var arrSelect = new Array();

	if (obj.length > 0 && obj.options[0].value == '-1') {
		arrSelect = new Array(-1, obj.options[0].text);
	}

	removeChildrenRecursively(obj);

	if (arrSelect.length > 0)
		addOption(obj, arrSelect)
}

function removeChildrenRecursively(node) {
	if (!node) return;

	while (node.hasChildNodes()) {
		removeChildrenRecursively(node.firstChild);
		node.removeChild(node.firstChild);
	}
}

//=========================================================================================
//================================= Cookies Functions =====================================
//=========================================================================================
function setCookie(name, value, expires, path, domain, secure) {
	/*
	name - name of the cookie
	value - value of the cookie
	[expires] - expiration date of the cookie (defaults to end of current session)
	[path] - path for which the cookie is valid (defaults to path of calling document)
	[domain] - domain for which the cookie is valid (defaults to domain of calling document)
	[secure] - Boolean value indicating if the cookie transmission requires a secure transmission
	*/

	var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");

	document.cookie = curCookie;
}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	}
	else {
		begin += 2;
	}

	var end = document.cookie.indexOf(";", begin);
	if (end == -1) {
		end = dc.length;
	}

	return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

//=========================================================================================
//============================== Other Common Functions ===================================
//=========================================================================================
function getObj(ObjName) {
	return document.getElementById(ObjName)
}

function getObjA(ObjName) {
	return document.getElementsByName(ObjName);
}

function URLEncode(clearString) {
	var output = '';
	var x = 0;
	clearString = clearString.toString();
	var regex = /(^[a-zA-Z0-9_.]*)/;
	while (x < clearString.length) {
		var match = regex.exec(clearString.substr(x));
		if (match != null && match.length > 1 && match[1] != '') {
			output += match[1];
			x += match[1].length;
		}
		else {
			if (clearString[x] == ' ') {
				output += '+';
			}
			else {
				var charCode = clearString.charCodeAt(x);
				var hexVal = charCode.toString(16);
				output += '%' + (hexVal.length < 2 ? '0' : '') + hexVal.toUpperCase();
			}
			x++;
		}
	}
	return output;
}

function ddlRequiredValidate(source, arguments) {
	var obj = eval(source.id)

	if (document.getElementById(obj.controltovalidate).value == "-1")
		arguments.IsValid = false;
	else
		arguments.IsValid = true;
}

function EscapeXML(szXML) {
	var szReturn = '';
	if (typeof (szXML) == 'undefined' || String(szXML) == '')
		return szReturn;
	if (typeof (szXML) != 'string')
		return szXML;

	var startIndex = 0;
	var endIndex = 0;

	while (szXML.indexOf('&', startIndex) != -1) {
		endIndex = szXML.indexOf('&', startIndex) + 1;
		szReturn += szXML.substring(startIndex, endIndex).replace('&', '&amp;');
		startIndex = endIndex;
	}

	szReturn += szXML.substr(startIndex);
	while (szReturn.indexOf('<') != -1)
		szReturn = szReturn.replace('<', '&lt;');
	while (szReturn.indexOf('>') != -1)
		szReturn = szReturn.replace('>', '&gt;');
	while (szReturn.indexOf('"') != -1)
		szReturn = szReturn.replace('"', '&quot;');
	while (szReturn.indexOf("\'") != -1)
		szReturn = szReturn.replace("'", "&apos;&apos;");

	return szReturn;
}

function hints_prepareInputs() {
	var inputs = document.getElementsByTagName("input");
	for (var j = 0; j < inputs.length; j++) {
		if (inputs[j].parentNode.getElementsByTagName("div")[0]) {
			inputs[j].onfocus = function() {
				hints_Show(this, this.parentNode.getElementsByTagName("div")[0]);
			}
			inputs[j].onblur = function() {
				hints_Hide(this, this.parentNode.getElementsByTagName("div")[0]);
			}
		}
	}

	var selects = document.getElementsByTagName("select");
	for (var k = 0; k < selects.length; k++) {
		if (selects[k].parentNode.getElementsByTagName("div")[0]) {
			selects[k].onfocus = function() {
				hints_Show(this, this.parentNode.getElementsByTagName("div")[0]);
			}
			selects[k].onblur = function() {
				hints_Hide(this, this.parentNode.getElementsByTagName("div")[0]);
			}
		}
	}
}

function hints_Show(obj, hintsObj) {
	hintsObj.style.display = "inline";
	hintsObj.style.overflow = "hidden";
	hints_MoveXY(obj, hintsObj);
}

function hints_Hide(obj, hintsObj) {
	hintsObj.style.display = "none";
}

function hints_MoveXY(objParent, object) {
	try {
		showMenu(objParent.id, object.id, null, true)

		object.style.top = (Number(object.style.top.replace('px', '')) - (object.clientHeight / 2) - 10).toString() + 'px';
		object.style.left = (Number(object.style.left.replace('px', '')) - object.offsetWidth - 2).toString() + 'px';
	}
	catch (e) {
		return;
	}
}

function createSubMenuDIV(strSubMenu, className) {
	var tmpDIV = document.createElement("DIV");
	tmpDIV.id = strSubMenu;
	tmpDIV.className = className;

	document.body.appendChild(tmpDIV);

	return getObj(strSubMenu);
}

function getKeyPressedEvent(e, keyAsciiCode) {
	var keyPress = 0;
	if (typeof (event) != 'undefined')
		keyPress = event.keyCode;
	else
		keyPress = e.keyCode;

	if (keyPress == keyAsciiCode && keyPress != 0)
		return true;
	else
		return false;
}


function getStringForDB(objArrMain, XML) {
	var tmpSettings = new Array();
	for (var j = 0; j < XML.length; j++) {
		try {
			tmpSettings[tmpSettings.length] = XML[j][1].toString();
		}
		catch (e) {
			tmpSettings[tmpSettings.length] = XML[j].toString();
		}
	}

	var txtXML = "";
	for (var ii = 0; ii < objArrMain.length; ii++) {
	    for (var z = 0; z < tmpSettings.length; z++) {
	        if (typeof (objArrMain[ii][tmpSettings[z]]) != 'undefined' && objArrMain[ii][tmpSettings[z]] != null)
	            txtXML += objArrMain[ii][tmpSettings[z]];

	        txtXML += ";";
	    }
		txtXML += ii.toString();

		if (ii < objArrMain.length - 1)
			txtXML += "$";
	}

	return (txtXML)
}

function setProgress(gDiv, valueHeight, valuePercent) {
	if (valueHeight == 'small') {
		var tHeight = 88;
	}
	else {
		var tHeight = 240;
	}

	var gBG = document.getElementById(gDiv);
	var tValue = valuePercent * (tHeight / 100);
	if (tValue == tHeight) {
		gBG.style.backgroundPosition = "0px -" + (tValue + 30) + "px";
	}
	else {
		gBG.style.backgroundPosition = "0px -" + tValue + "px";
	}
}

function correctPNG() {
	var arVersion = navigator.appVersion.split("MSIE")
	var version = parseFloat(arVersion[1])
	if ((version >= 5.5) && (version < 7.0) && (document.body.filters)) {
		for (var i = 0; i < document.images.length; i++) {
			var img = document.images[i]

			var imgName = img.src.toUpperCase()
			if (imgName.substring(imgName.length - 3, imgName.length) == "PNG") {
				var imgID = (img.id) ? "id='" + img.id + "' " : ""
				var imgClass = (img.className) ? "class='" + img.className + "' " : ""
				var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
				var imgStyle = "display:inline-block;" + img.style.cssText
				var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + img.src + "\', sizingMethod='crop');\"></span>";
				img.outerHTML = strNewHTML;
				i = i - 1
			}
		}
	}
}

function escapeHTML(str) {
	var div = document.createElement('div');
	var text = document.createTextNode(str);
	div.appendChild(text);
	return div.innerHTML;
}

//=========================================================================================
//==============================                        ===================================
//=============================  JQuery DropDown Styles  ==================================
//==============================                        ===================================
//=========================================================================================

// UNDER  CONSTRUCTION

// Use in populateSelect function as runAfterLoad attribute
// or after several populateSelects
function bindJQDDLAfterPopulate() {

	//alert('Start Style');
	var inputs = document.getElementsByTagName('select');
	for (var i = 0; i < inputs.length; i++) {
		var input = inputs[i];
		if (input.getAttribute('bpopulated') != null && typeof (input.getAttribute('bpopulated')) != 'undefined' && input.getAttribute('bpopulated').toString() == 'true') {
			//alert(input.id + ' - ' + input.bpopulated + '\n\n' + input.childNodes.length);
			input.setAttribute('bpopulated', setJQDDLStyle(input.id));
			//alert(input.id + ' - ' + input.bpopulated + ' - ' + input.lastChild.text);
		}
	}
}

function bindJQDDL(input) {
	setJQDDLStyle(input.id);
}

// Function does actual styling
// Parameter is id of the DropDownList
function setJQDDLStyle(ddlid) {
    //debugger;
    var stext = "בחר";
    if (ddlid == "ddlSpecialization")
    {
        stext = "תחום הלימוד";
    }
	if (getObj(ddlid).deftext != null && typeof (getObj(ddlid).deftext) != 'undefined') {
		stext = getObj(ddlid).deftext;
	}
	if ($('#' + ddlid).children('optgroup').length != 0 && getObj(ddlid).firstChild.value == -1) {
		//alert(getObj(ddlid).firstChild.text);
		stext = getObj(ddlid).firstChild.text;
	}
	//alert($('#' + ddlid).next().); newListSelected 
	try {
	    if (getObj(ddlid).nextSibling != null && getObj(ddlid).nextSibling.className != null
			&& typeof (getObj(ddlid).nextSibling.className) != 'undefined'
			&& getObj(ddlid).nextSibling.className.indexOf('newListSelected') != -1) {
			//alert('reBind');
			$('#' + ddlid).next().remove();
			$('#' + ddlid).unbind();
		}
		//alert('Bind: ' + ddlid + ' /nWith defTxt: ' + stext);
		$('#' + ddlid).sSelect(
		{
			defaultText: stext,
			animationSpeed: 100,
			ddMaxHeight: '200px',
			cssMainWidth: 'ddlOuterWidth',
			cssSecWidth: 'ddlInnerWidth'
		});
		return 'false';
	}
	catch (e) {
		throw (e);
		return 'true';
	}
}


function  validationSummaryAlert(message)
{

    $('#' + validationBox).text("");
    $('#' + validationBox).text(message);
    $('#' + validationBox).show();    
    window.scroll(0, 0);
}

function GetDirectionByText(textValue)
{
    if (textValue == '' || textValue == null)
    {
        return 'rtl'
    }
    else
    {
        var MyString = new String(textValue);
        var ENUCounter = 0;
        var HEBCounter = 0;
        var ConstPrecentage = 0.5;
        for (var i = 0; i < MyString.length; i++)
        {
            if ((parseInt(MyString.charCodeAt(i)) >= 97 && parseInt(MyString.charCodeAt(i)) <= 122) || (parseInt(MyString.charCodeAt(i)) >= 65 && parseInt(MyString.charCodeAt(i)) <= 90))
            {
                ENUCounter++;
            }
            else if (parseInt(MyString.charCodeAt(i)) >= 1488 && parseInt(MyString.charCodeAt(i)) <= 1514)
            {
                HEBCounter++;
            }

        }
        if (ENUCounter >= HEBCounter)
        {
            return 'LTR';
        }
        else
        {
            return 'RTL';
        }
    }
}


function fbs_click(u) 
{
    t = document.title;
    window.open('http://www.facebook.com/sharer.php?u=' + encodeURIComponent(u) + '&t=' + encodeURIComponent(t), 'sharer', 'toolbar=0,status=0,width=626,height=436');
    return false;
}

// Function that helps to make the right part of the page
// same height as the left part (DIV formation).
// Still under construction
//function equilibrium()
//{
//	alert('Left clientHeight = ' + getObj('jc_leftArea').clientHeight + '\nLeft offsetHeight = ' + getObj('jc_leftArea').offsetHeight 
//		+ '\nLeft styleHeight = ' + getObj('jc_leftArea').style.height + '\nRight styleHeight = ' + getObj('jc_rightArea').style.height);
//	if (getObj('jc_leftArea').clientHeight < getObj('jc_rightArea').style.height)
//		getObj('jc_leftArea').style.height = getObj('jc_rightArea').style.height;
//	else
//		getObj('jc_rightArea').style.height = getObj('jc_leftArea').style.height = getObj('jc_leftArea').clientHeight;
//}