/*************************************************************************
********* JavaScript SDK *************************************************
********* Created By: Mohamed Farouk Mohamed Abdel Latif(30 January 2008)*
********* Last Modified: 30 January 2008 *********************************
***** Ministry Of Presidential Affairs - All rights are reserved *********
*************************************************************************/

//////////// GLOBALS ////////////////////////////////////////////
var loadTimer;
var enEnabled = true;

/*function BrowserInfo(){}
var BrowserUA=navigator.userAgent.toLowerCase();
BrowserInfo.ie = window.VBArray;
BrowserInfo.ie5=(BrowserInfo.ie && (!window.document.createEventObject || !window.document.namespaces));
BrowserInfo.ie55=(BrowserInfo.ie && !window.document.implementation);
BrowserInfo.ie6=(BrowserInfo.ie && window.document.implementation);
BrowserInfo.ie7 = (BrowserInfo.ie && window.XMLHttpRequest);
BrowserInfo.opera = window.opera;
BrowserInfo.gecko = (window.netscape && !BrowserInfo. opera);
BrowserInfo.khtml=(BrowserUA.indexOf("safari")+1 || BrowserUA.indexOf("konqueror")+1)*/

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.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();


//////////////////////// Libery Functions ///////////////////////
//Alias to document.getElementById
function ret(id)
{
	return document.getElementById(id);
}//ret

function IsIE7()
{
    if(BrowserDetect.browser=="Explorer" && BrowserDetect.version=="7")
        return true;
}//IsIE7

function IsIE()
{
    if(BrowserDetect.browser=="Explorer")
        return true;
}//IsIE7

function IsNetscapeFamily()
{
    if(BrowserDetect.browser=="Safari" || BrowserDetect.browser=="Firefox")
        return true;
}//IsIE7

function escapeEx(str)
{
    if(IsNetscapeFamily())
    {
        return str;
    }//if
    else
        return escape(str);
}//escapeEx

function getScrollY() {
  if(document.documentElement.scrollTop>0)
	return document.documentElement.scrollTop;
  var scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
  }
  return scrOfY;
}

/*************************************************************************
The conventional way to loading external JavaScript (ie: .js) and CSS (ie: .css) 
files on a page is to stick a reference to them in the HEAD section of your page
*************************************************************************/
function loadjscssfile(filename, filetype){
 if (filetype=="js"){ //if filename is a external JavaScript file
  var fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript")
  fileref.setAttribute("src", filename)
 }
 else if (filetype=="css"){ //if filename is an external CSS file
  var fileref=document.createElement("link")
  fileref.setAttribute("rel", "stylesheet")
  fileref.setAttribute("type", "text/css")
  fileref.setAttribute("href", filename)
 }
 if (typeof fileref!="undefined")
  document.getElementsByTagName("head")[0].appendChild(fileref)
}


////// Validators ////////////////////////
function isThisNumber(src,arg)
{
	var obj = ret(src.controltovalidate);
	if(!isNaN(obj.value))
		arg.IsValid = true;
	else
		arg.IsValid = false;
}//valNumber

function isLengthRight(src,arg)
{
	var obj = ret(src.controltovalidate);
	var textLen = obj.value.length;
	
	if(obj.minLen && textLen<parseInt(obj.minLen))
		{arg.IsValid = false;return;}
	if(obj.maxLen && textLen>parseInt(obj.maxLen))
		{arg.IsValid = false;return;}
	arg.IsValid = true;
}//valNumber

function isThisArabic(src,arg)
{
	var validChars = new Array();
	validChars["-"] = true;
	validChars["_"] = true;
	validChars["."] = true;
	var obj = ret(src.controltovalidate);
	var name= obj.value;
	for(var i=0;i<name.length;i++)
	{
		var ch=parseInt(name.charCodeAt(i));
		var cChar = name.substring(i,i+1);
		if ((ch<1569 || ch>1620) && ch!=32 && isNaN(name.substr(i,1)) && !validChars[cChar])
			{arg.IsValid = false;return;}
	}//for
	arg.IsValid = true;
}//isThisArabic

function isThisEnglish(src,arg)
{
	var obj = ret(src.controltovalidate);
	var name= obj.value;
	for(var i=0;i<name.length;i++)
	{
		var ch=parseInt(name.charCodeAt(i));
		if ((ch<97 || ch>122) && (ch<65 || ch>90)&& ch!=32 && isNaN(name.substr(i,1))) 
			{arg.IsValid = false;return;}
	}//for
	arg.IsValid = true;
}//isThisEnglish

function isThisDate(src,arg)
{
	var dateArr = new Array();
	var obj = ret(src.controltovalidate);
	dateArr = obj.value.split("/");
	if(dateArr.length!=3)
	{
		//obj.focus();
		arg.IsValid = false;
		return;
	}
	for (i=0;i<3;i++)
	{	
		if(isNaN(dateArr[i]))
		{
			//obj.focus();
			arg.IsValid = false;
			return;
		}
	}//for
	arg.IsValid = true;
}//valDate

//////// Message Handler
function alr(eid,page,w,h)
{
	var wi =w?w:450;
	var hi =h?h:180;
	var urlBase = page?page+"?":"";
	var urlSuf = "ran="+Math.random()*10000+"&";
	urlSuf += eid?"EID="+eid:"";
	showModalDialog(urlBase+urlSuf,this,"status:no;dialogWidth:"+wi+"px;dialogHeight:"+hi+"px;Help:No");
}//alr


//////// Utilities
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}


///// Global Controls ////////////////
function comboFilter(filterId,comboId,itemsName,writeHTML)
{
	this.id = filterId;
	this.combo = comboId;
	this.html = "";
	this.optionsCache = new Array();
	this.working = false;
	this.timeOut = null;
	
	//this.getHtml = getHtml;
	this.fillCache = fillCache;
	this.preformFilter = preformFilter;
	this.startFiltering = startFiltering;
	
	//function getHtml()
	//{
		_html = "الإسم يحتوي على: <input style='width:67%' id='comboFilter_text_"+this.id+"' class='tInput' type='text' onKeyUp='eval(\""+this.id+".startFiltering()\")'>";
		//return _html;
	//}//getHtml
	
	function fillCache()
	{
		for(i=0;i<ret(this.combo).options.length;i++)
		{
			this.optionsCache[this.optionsCache.length]=new Option(ret(this.combo).options[i].text,ret(this.combo).options[i].value);
		}//for
	}//fillCache
	if(writeHTML)
	{
		document.write(_html);
		this.fillCache();
	}//
	else
		this.html = _html;
	
	function startFiltering()
	{
		if(this.working)
			return;
		this.timeOut = setTimeout("eval('"+this.id+".preformFilter();')",700);
	}//startFiltering
	function preformFilter()
	{
		ret(this.combo).options.length = 0;
		var _criteria = ret('comboFilter_text_'+this.id).value;
		for(i=0;i<this.optionsCache.length;i++)
		{
			if(this.optionsCache[i].text.toLowerCase().indexOf(_criteria)!=-1
			|| this.optionsCache[i].text=="")
			{
				var _option = new Option(this.optionsCache[i].text,this.optionsCache[i].value);
				ret(this.combo).options[ret(this.combo).options.length] = _option;
			}//if
		}//for
		clearTimeout(this.timeOut);
	}//
}//comboFilter

//Renders Standard Image Button
function CMSButton(name,label,image,width,height,onclick)
{
    this.Name = name;
    this.Label = label;
    this.Image = image;
    this.Width = width;
    this.Height = height;
    this.OnClick = onclick;
    
    this.ImagePath = CMSPath+"Img/buttons/ar/";
    
    
    this.GetHTML = GetHTML;
    
    this.InnerHTML = this.GetHTML();
    
    function GetHTML()
    {
        return "<img src='"+this.ImagePath+this.Image+".gif' style='width:"+this.Width+";height:"+this.Height+
                ";cursor:hand;' onmouseover='this.src=\""+this.ImagePath+this.Image+"_over.gif\"' onmouseout='this.src=\""+this.ImagePath+this.Image+".gif\"' onclick='"+this.OnClick+"' />";
    }//GetHTML
}//CMSButton

//Renders Standard Image Button
function GetCMSInputText(name,label,width)
{
    return GetCMSInputTextEx(name,name,label,"",width,"","","");
}//GetCMSInputText
function GetCMSInputTextValue(name,label,value,width)
{
    return GetCMSInputTextEx(name,name,label,value,width,"","","");
}//GetCMSInputText
function GetCMSInputTextEx(name,id,label,value,width,height,readOnly,disabled)
{
    var _value = value!=""?value:'<'+label+'>'
    var _onActivate = 'if(this.value=="<'+label+'>"){this.value=\"\";}this.className=\"FormInputActive\"';
    return "<input baseValue='"+_value+"' name='"+name+"' id='"+id+"' class='FormInputNormal' type='text' style='width:"+width+"px;height:"+height+
                "px;' value='"+_value+"' onfocus='"+_onActivate+"' onactivate='"+_onActivate+"'  onclick='"+_onActivate+"' />";
}//GetCMSInputText


///////////////////// HTTP POST REQUEST [AJAX] Componants ///////////////
function XMLHTTPRequest()
{
    this.HTTP = null;
    this.load = load;
    this.GetXMLObject = GetXMLObject;
    
    //Initializing HTTP
    if (window.XMLHttpRequest) 
    { 
        // Mozilla, Safari,...
        this.HTTP = new XMLHttpRequest();
        if (this.HTTP.overrideMimeType) 
        {
     	    // set type accordingly to anticipated content type
            this.HTTP.overrideMimeType('text/html');
        }//if
    }//if
    else if (window.ActiveXObject) 
    { 
        // IE
        try 
        {
            this.HTTP = new ActiveXObject("Msxml2.XMLHTTP");
        }//try
        catch (e) 
        {
            try 
            {
                this.HTTP = new ActiveXObject("Microsoft.XMLHTTP");
            }//try
            catch (e) {}
        }//catch
     }//else
     if (!this.HTTP) 
     {
        alert('Cannot create XMLHTTP instance');
        return false;
     }//if
     
    function load(iurl,iparams,onChange,loadingIndicator,loadingStr,isPost,isUpload)
    {
       if(this.HTTP && this.HTTP.readyState != 4 && this.HTTP.readyState != 0)
       {
           alert("Please wait, another process is running");
           return;
       }//IF
       if(ret(loadingIndicator))
            ret(loadingIndicator).innerHTML = loadingStr;
       
       var params = iparams;
       
       var _method = isPost?"POST":"GET";
       if(!isPost)
            iurl = iurl+"?"+params;
       this.HTTP.open(_method, iurl, true);
      
        //Send the proper header information along with the request
        if(isPost)
        {
            var _contentType = isUpload?"":"application/x-www-form-urlencoded";
            this.HTTP.setRequestHeader("Content-type", _contentType);
            this.HTTP.setRequestHeader("Content-length", params.length);
            //this.HTTP.overrideMimeType('text/xml');
            //this.HTTP.setRequestHeader("Content-Type","text/xml");
            this.HTTP.send(params);
        }//if
        this.HTTP.onreadystatechange = onChange;
        this.HTTP.send(params);
    }//postRequest
    
    function GetXMLObject()
    {
        if(IsIE())
            _xml = this.HTTP.responseXML.documentElement;
        if(IsNetscapeFamily())
        {
            var objDOMParser = new DOMParser();
            _xml = objDOMParser.parseFromString(this.HTTP.responseText, "text/xml"); 
        }//if
        return _xml;
    }//GetXMLObject
}//XMLHTTPRequest
var AJAXRequest = new  XMLHTTPRequest();







 
 
 
 