﻿Rav = function() {};
Rav.getElement = function Rav$getElement(id) {
	if(document.all) {
		return document.all[id];
	}
	return document.getElementById(id);
}
Rav.moveToCenter = function Rav$moveToCenter(objectId, containerId) {
	var container = (containerId) ? $("#" + containerId) : $(window);
	var object = $("#" + objectId);
	var top = parseInt((container.height() - object.height()) / 2 + container.scrollTop());
	var left = parseInt((container.width() - object.width()) / 2);
	object.css("top", top);
	object.css("left", left);
	container.scroll(function(){
		var container = (containerId) ? $("#" + containerId) : $(window);
		var object = $("#" + objectId);
		var top = parseInt((container.height() - object.height()) / 2 + container.scrollTop());
		var left = parseInt((container.width() - object.width()) / 2);
		object.css("top", top);
		object.css("left", left);
	})
};
Rav.showImage = function Rav$showImage(img, src) {
	if(img.loaded) return;
	img.loaded = true; 
	var limg = new Image();
	limg.src = src;
	$(limg).ready(function() {
		img.src = src;
	});
}
Rav.toPersianNumber = function Rav$toPersianNumber(number) {
	if (number == null || number == "") return "";
	var main = "0123456789";
	var replace = "۰۱۲۳۴۵۶۷۸۹";
	var eNumber = number.toString();
	for (var i = 0; i < main.length; i++) {
		while(eNumber.indexOf(main.charAt(i)) > -1) {
			eNumber = eNumber.replace(main.charAt(i), replace.charAt(i));
		}
	}
	return eNumber;
}
/*******************************************************/
Rav.createDelegate = function Rav$createDelegate(instance, method) {
    return function() {
        return method.apply(instance, arguments);
    }
}
Rav.addHandler = function Rav$addHandler(element, eventName, handler) {
    if (!element._events) {
        element._events = {};
    }
    var eventCache = element._events[eventName];
    if (!eventCache) {
        element._events[eventName] = eventCache = [];
    }
    var browserHandler;
    if (element.addEventListener) {
        browserHandler = function(e) {
            return handler.call(element, e);
        }
        element.addEventListener(eventName, browserHandler, false);
    }
    else if (element.attachEvent) {
        browserHandler = function() {
            var e = {};
            try {e = window.event} catch(ex) {}
            return handler.call(element, e);
        }
        element.attachEvent('on' + eventName, browserHandler);
    }
    eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler};
}

Rav.addEvent = function Rav$addEvent(target, eventName, handler) {
	if(!target._events) {
		target._events = [];
	}
	if(!target._events[eventName]) {
		target._events[eventName] = [];
	}
	target._events[eventName][target._events[eventName].length] = handler;
}
Rav.getEvent = function Rav$getEvent(target, eventName) {
	if(!target._events) return null;
	return target._events[eventName];
}
Rav.fairEvent = function Rav$fairEvent(target, eventName) {
	if(!target._events) return;
	handlers = Rav.getEvent(target, eventName);
	if(!handlers) return;
	for(hl in handlers) {
		handlers[hl](target);
	}
}
/******************** Components *******************/
$.fn.serializeNoViewState = function() {
    return this.find("input,textarea,select,hidden")
               .not("[type=hidden][name^=__]")
               .serialize();    
}
Rav.loadComponent = function Rav$loadComponent(containerId, xmlFilePath, sectionIndex, componentIndex, args) {
	var container = Rav.getElement(containerId);
	var $container = $("#" + containerId);
	var loader = document.createElement("div");
	container.appendChild(loader);
	var $loader = $(loader);
	$loader.css("position", "absolute");
	$loader.css("z-index", 1000);
	$loader.css("text-align", "center");
	$loader.css("background-color", "#cccccc");
	$loader.css("filter", "alpha (opacity=50)");
	$loader.css("opacity", "0.5");
	var pos = $container.position();
	$loader.css("top", pos.top);
	$loader.css("left", pos.left);
	//$loader.position($container.position());
	$loader.width($container.outerWidth());
	var containerHeight = $container.css("height");
	if($container.height() < 100) {
		$container.height(100);
	}
	var h = $container.outerHeight();
	$loader.height(h);
	$loader.html("<center><div style=\"text-align:center;margin-top:" + (h / 2 - 20) + "px;width:140px;background-color:#ffffff;border:solid 1px #000000;text-align:center;padding:4px 0px\"><img src=\"/Images/Progress.gif\" alt=\"لطفا صبر کنيد...\" align=\"absmiddle\" /> لطفا صبر کنيد...</div></center>");
	var q = "";
	if(args) {
		for(var name in args) {
			q += "&" + name + "=" + args[name];
		}
	}
	var now = new Date();
	$.ajax({
		type: "POST",
		url: "/Modules/PageMaker/ComponentAjax.aspx?Tick=" + now.getTime() + "&P=" + containerId + "&F=" + xmlFilePath + "&S=" + sectionIndex + "&C=" + componentIndex + q,
		data: $().serializeNoViewState(),
		processData: false,
		dataType: "sting",
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			//alert(XMLHttpRequest.responseText);
		},
		success: function(data) {
			container.removeChild(loader);
			container.style.height = (containerHeight == "0px") ? "" : containerHeight;
			$container.html(data);
		}
	});
}
/*********************** Menu **********************/
Rav.showVMenu = function Rav$VMenu$showVMenu(container, menuId, align) {
	document.getElementById(menuId).showing = true;
	$("#" + menuId).show();
	$("#" + menuId).css("margin-top", -$(container).height());
	$("#" + menuId).css("margin-" + align, $(container).width());
}
Rav.showHMenu = function Rav$VMenu$showHMenu(container, menuId, align) {
	document.getElementById(menuId).showing = true;
	$("#" + menuId).show();
	$("#" + menuId).css("margin-top", 2);
	$("#" + menuId).css("margin-" + align, 0);
}
Rav.hideMenu = function Rav$VMenu$hideMenu(menuId) {
	hiddingMenu = menuId;
	document.getElementById(menuId).showing = false;
	setTimeout("Rav.hideMenuTimeout('" + menuId + "')", 20);
}
Rav.hideMenuTimeout = function Rav$VMenu$hideMenuTimeout(menuId){
	if(document.getElementById(menuId).showing) return;
	Rav.hideMenuNow(menuId);
}
Rav.hideMenuNow = function Rav$VMenu$hideMenuNow(menuId){
	$("#" + menuId).hide();
}
/****************************************************/
Rav.checkChar = function Rav$checkChar(e, chars) {
    var evt = (e) ? e : window.event;
    var code = (evt.keyCode) ? evt.keyCode : ((evt.charCode) ? evt.charCode : evt.which)
    var key = String.fromCharCode(code);
    if (chars.indexOf(key) == -1 && code != 9 && code != 8) {
        return false;
    }
    return true;
}
/******************** RavTextBox ********************/
function CheckChar(baseChars) {
	var keyCode = window.event.keyCode;
	var key = String.fromCharCode(keyCode);
	if(baseChars.indexOf(key) == -1 && keyCode != 9 && keyCode != 8) {
		window.event.keyCode = "";
	}
}
function CheckUserName() {
	var keyCode = window.event.keyCode;
	if((keyCode <97 || keyCode >122) && (keyCode <65 || keyCode >90) && (keyCode <48 || keyCode >57) && keyCode != 9 && keyCode != 8 && keyCode != 46) {
		window.event.keyCode = "";
	}
}
function SetLang(faen) {
	Lang = faen;
}
/*********************** Type **********************/
var Lang = 0;
var OsName;
if(window.clientInformation.appVersion.indexOf("Windows 98") > -1)
	OsName = 1;
else
	OsName = 2;	

SetStatus();
	
function KeyDown() {
	if (window.event.shiftKey && window.event.ctrlKey){
		if(Lang==0) Lang = 1;
		else if(Lang == 1) Lang = 0;
		SetStatus();
		window.event.returnValue = false;
		return;
	}
	window.event.returnValue = true;
}
function KeyPress() {
	var key = window.event.keyCode;
	if(Lang == 2) {
		if(key < 127) Lang = 1;
		else Lang = 0;
	}
	SetStatus();
	if(Lang == 0) {
		switch (String.fromCharCode(key)){
			case "H":window.event.keyCode = 1570;break;
			case "h":window.event.keyCode = 1575;break;
			case "f":window.event.keyCode = 1576;break;
			case "F":window.event.keyCode = 1576;break;
			case "`":window.event.keyCode = 1662;break;
			case "j":window.event.keyCode = 1578;break;
			case "J":window.event.keyCode = 1578;break;
			case "e":window.event.keyCode = 1579;break;
			case "E":window.event.keyCode = 1579;break;
			case "[":window.event.keyCode = 1580;break;
			case "]":window.event.keyCode = 1670;break;
			case "p":window.event.keyCode = 1581;break;
			case "P":window.event.keyCode = 1581;break;
			case "O":window.event.keyCode = 1582;break;
			case "o":window.event.keyCode = 1582;break;
			case "n":window.event.keyCode = 1583;break;
			case "N":window.event.keyCode = 1583;break;
			case "b":window.event.keyCode = 1584;break;
			case "B":window.event.keyCode = 1584;break;
			case "V":window.event.keyCode = 1585;break;
			case "v":window.event.keyCode = 1585;break;
			case "c":window.event.keyCode = 1586;break;
			case "C":window.event.keyCode = 1586;break;
			case "\\":window.event.keyCode = 1688;break;
			case "s":window.event.keyCode = 1587;break;
			case "S":window.event.keyCode = 1587;break;
			case "a":window.event.keyCode = 1588;break;
			case "A":window.event.keyCode = 1588;break;
			case "w":window.event.keyCode = 1589;break;
			case "W":window.event.keyCode = 1589;break;
			case "q":window.event.keyCode = 1590;break;
			case "Q":window.event.keyCode = 1590;break;
			case "x":window.event.keyCode = 1591;break;
			case "X":window.event.keyCode = 1591;break;
			case "z":window.event.keyCode = 1592;break;
			case "Z":window.event.keyCode = 1592;break;
			case "u":window.event.keyCode = 1593;break;
			case "U":window.event.keyCode = 1593;break;
			case "y":window.event.keyCode = 1594;break;
			case "Y":window.event.keyCode = 1594;break;
			case "t":window.event.keyCode = 1601;break;
			case "T":window.event.keyCode = 1548;break;
			case "r":window.event.keyCode = 1602;break;
			case "R":window.event.keyCode = 1602;break;
			case ";":window.event.keyCode = 1603;break;
			case "'":window.event.keyCode = 1711;break;
			case "g":window.event.keyCode = 1604;break;
			case "G":window.event.keyCode = 1604;break;
			case "l":window.event.keyCode = 1605;break;
			case "L":window.event.keyCode = 1548;break;
			case "k":window.event.keyCode = 1606;break;
			case "K":window.event.keyCode = 1548;break;
			case ",":window.event.keyCode = 1608;break;
			case "i":window.event.keyCode = 1607;break;
			case "I":window.event.keyCode = 1607;break;
			case "d":window.event.keyCode = 1610;break;
			case "D":window.event.keyCode = 1610;break;
			case "m":window.event.keyCode = 1574;break;
			case "M":window.event.keyCode = 1574;break;
			case "?":window.event.keyCode = 1567;break;
			case "(":window.event.keyCode = 64830;break;
			case ")":window.event.keyCode = 64831;break;
		}//End Switch
		if(OsName == 2) {
			if(key == 247) window.event.keyCode = 1662;
			if(key == 1705) window.event.keyCode = 1603;
			if(key == 1740) window.event.keyCode = 1610;
		}
		window.event.returnValue = true;
	}//End IF
	
	if (Lang==1) {
		if (key>127) {
			window.event.returnValue = false;
			window.defaultStatus = "Just type in permitted language";
		} else {
			if(key==39) {
				window.event.keyCode = 96;
				return;
			}
			window.event.returnValue=true;
		}
	}
}
function SetStatus() {
	if(Lang == 0) {
		window.defaultStatus = "Farsi Lang. Press <Ctrl>+<Shift> for English Lang";
	}
	else if(Lang == 1) {
		window.defaultStatus = "English Lang. Press <Ctrl>+<Shift> for Farsi Lang";
	}
}
/******************* HFiller ******************/
Rav.showHidePanel = function Rav$showHidePanel(id) {
	var pnl = $("#" + id);
	var btn = $("#" + id + "_btnShowHide");
	if(pnl.css("display") == "none") {
		btn.removeClass("btnShowHide_Show");
		btn.addClass("btnShowHide_Hide");
		pnl.show();
	} else {
		btn.removeClass("btnShowHide_Hide");
		btn.addClass("btnShowHide_Show");
		pnl.hide();
	}
}
/***************** Color Picker *****************/
function getColorFromPallet(id, hidId) {
	var dlg = document.getElementById(id + "_ColorDlg");
	var viewer = document.getElementById(id + "_ColorViewer");
	var hid = document.getElementById(hidId);
	
	var color = dlg.ChooseColorDlg();
	color = this.ConvertColor(color);
	viewer.style.backgroundColor = color;
	hid.value = color;
}	
function ConvertColor(color) {
	color = parseInt(color);
	color = color.toString(16);
	if (color.length < 6) {
		var sTempString = "000000".substring(0, (6 - color.length));
		color = "#" + sTempString.concat(color).toUpperCase();
	} else {
		color = "#" + color.toUpperCase();
	}
	return color;
}
function removeColor(id, hidId) {
	var viewer = document.getElementById(id + "_ColorViewer");
	var hid = document.getElementById(hidId);

	viewer.style.backgroundColor = "";
	hid.value = "";
}
/**************************************************/
Rav.AutoCheckStatus = function() {}
Rav.AutoCheckStatus.None = -1;
Rav.AutoCheckStatus.Fail = 0;
Rav.AutoCheckStatus.OK = 1;
Rav.AutoCheckStatus.Checking = 2;

Rav.AutoCompleteStatus = function() {}
Rav.AutoCompleteStatus.None = -1;
Rav.AutoCompleteStatus.Fail = 0;
Rav.AutoCompleteStatus.OK = 1;
Rav.AutoCompleteStatus.Completing = 2;
Rav.AutoCompleteStatus.Unselected = 3;

