// JavaScript Document

//	var ev = e || window.event;

var ev={
	_items: new Array(),
	AddListener: function (el, sType, fn, scope)
	{

		if (el==window) {
			rFunc=this.DomEvent;
		} else {
			rFunc=this.elEvent;
		}
		var o=this.GetEvent(el, sType);
		// If this event has not registered yet, Register it.
		if (!o)
		{
			if (window.addEventListener) {

				el.addEventListener(sType, rFunc, false);
			} else if (window.attachEvent) {
				el.attachEvent("on" + sType, rFunc);
			}
		}
		// This event has registed before, Check the callback function.
		else
		{
			if ((o.fn==fn) && (o.scope==scope)) return;
		}
		// Add this event to waiting list.
		this._items.push({'el': el, 'type': sType, 'fn': fn, 'scope': scope});
	}, 
	RemoveListener: function(el, sType, fn)
	{
		var i=0;
		for (var x=0; this._items.length; x++)
		{
			o=this._items[x];
			if ((o.el==el) && (o.type==sType))
			{
				i++;
				if (o.fn==fn) {
					var n=x;	
				}
			}
		}
		this._items.splice(n, 1);
		if (i<=1)
		{
			if (window.removeEventListener) {
				el.removeEventListener(sType, fn, (capture));
			} else if (window.detachEvent) {
				el.detachEvent("on" + sType, fn);
			}
		}
	},
	event: {},
	GetEvent: function (el, sType)
	{
		var o=null;
		for (var x=0; x<this._items.length; x++)
		{
			o=this._items[x];
			if ((o.el==el) && (o.type==sType)) {
				return o;
			}
		}
		return null;
	},
	elEvent: function (evt, el)
	{
		ev.event=evt||window.event;
		if (!el) 
		{
			el=ev.event.target||ev.event.srcElement;
		}
		ev.target=el;
		ev.relatedTarget=ev.event.relatedTarget||ev.event.toElement;
		ev.type=ev.event.type;
		for (var x=0; x<ev._items.length; x++)
		{
			o=ev._items[x];
			if ((ev.type==o.type) && (el==o.el))
			{
				Call(o.fn, o.scope);
			}
		}
		ev.event=null;
	},
	DomEvent: function (evt)
	{
		ev.elEvent(evt, window);
	},
	StopEvent: function() {
		if (!ev.event) return false;
		ev.event.cancelBubble = true;
		ev.event.returnValue = false;
		if (ev.event.preventDefault) ev.event.preventDefault();
		if (ev.event.stopPropagation) ev.event.stopPropagation();
		return true;
	}
}

function Call(func, scope)
{
	if (!scope)
	{
		func();
	}
	else
	{
		scope._cbFunc=o.fn;
		scope._brFunc=function () {
			this._cbFunc();
		}
		scope._brFunc();
	}
}

ev.AddListener(window, "load", MyCMS_Init);

function getfather(obj,what,father) {
	m=obj;
	found=false;
	while (true) {
		m=m.parentNode;
		if (!m) break;
		if (m[what]==father) {
			found=true;
			break;
		}
	}
	if (found==true) return m;
}

function FP_getObjectByID(id,o) {//v1.0
	var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);
	else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;
	if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)
	for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }
	f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;
	for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return el; } }
	return null;
}

function FormHandler_Init() {
	var t=document.forms;
	for (var x=0; x<t.length; x++) {
		if (typeof t[x].name != "string") continue;
		fn=t[x].name + "_Form";
		if (eval('typeof ' + fn)=='object') {
			f=eval(fn);
			f.Me=t[x];
			if (f.init) f.init(t[x]);
		} else if (eval('typeof ' + t[x].name + "_init")=='function') {
			o=eval(t[x].name + "_init");
			o(t[x]);
		}
		ev.AddListener(t[x], 'submit', FormHandler_Submit);
	}
}

function FormHandler_Submit(mv) {
	var e=ev.event;
	retValue=true;
	s=ev.target;
	if (!s) return;
	fn=s.name + "_Form";
	if (eval('typeof ' + fn)=='object') {
		o=eval(fn);
		if (o.submit) {
			retValue=o.submit(e);
		}
	} else if (eval('typeof ' + s.name + "_submit")=='function') {
		o=eval(s.name + "_submit");
		retValue=o(e);
	}
	if (!retValue) ev.StopEvent();
	return retValue;
}

function addcheckboxestoforms(evt) {
	if (evt) obj=evt.target;
	else if (window.event) obj=window.event.srcElement;
	else return;
	var t=obj.getElementsByTagName ("input");
	for (var x=0;x<t.length;x++) {
		if (t[x].type=='checkbox') {
			
			if (t[x].checked==false && t[x].value=='1') {
				chkboxName=t[x].name;
				t[x].remove();
				var newd=document.createElement ('input');
				newd.type='hidden';
				newd.value='0';

				newd.name=chkboxName;

				obj.appendChild(newd);
			}// if
		}// if
	}// for
	return checkfields(obj);
}

function checkfields(obj) {
	for (x=0; x<obj.elements.length; x++) {
		elm=obj.elements[x];
		if (elm.hasAttribute('required')==true) {
			if (elm.value=='') {
				alert('This field is required.');
				if (elm.focus) elm.focus();
				return false;
			}
		}
		if (elm.getAttribute("subtype")=='email') {
			if (!isEmailValid(elm.value)  && !isBlank(elm.value)) {
				alert("Invalid email.");
				if (elm.focus) elm.focus();
				return false;
			}
		}
	}
}

function isBlank(fieldValue) {
	var blankSpaces = / /g;
	fieldValue = fieldValue.replace(blankSpaces, "");
	return (fieldValue == "") ? true : false;
}

function isEmailValid(fieldValue) {
	var emailFilter = /^.+@.+\..{2,4}$/;
	var atSignFound = 0;
	for (var i = 0; i <= fieldValue.length; i++)
		if ( fieldValue.charAt(i) == "@" )
			atSignFound++;
	if ( atSignFound > 1 )
		return false;
	else
		return ( emailFilter.test(fieldValue) && !doesEmailHaveInvalidChar(fieldValue) ) ? true : false;
}

function doesEmailHaveInvalidChar(fieldValue) {
	var illegalChars = /[\(\)\<\>\,\;\:\\\/\"\[\] ]/;
	return ( illegalChars.test(fieldValue) ) ? true : false;
}

function checkMailId(mailids)
{
	if (isBlank(mailids) || !isEmailValid(mailids) ) {
		return false;
	}
	return true;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function openwindow(url,ww,wh) {
	w1=window.open(url,'w1','width='+ww+',height='+wh+',status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes');
	return w1;
}

function MyCMS_Init() {
	try {
		ImageBrowser_Init();
	} catch (e) {
		alert(e);
	}


	FormHandler_Init();

	ColorizeTable_Init();
}

function ImageBrowser_Init() {
	var instances=document.getElementsByTagName("mc:ib");
//	for (var x=0; x<instances.length; x++) {
	while (instances.length) {
		var instance=instances[0];
		Element.extend(instance);
		var div=document.createElement("div");

		var value=instance.getAttribute('value');
		var name =instance.getAttribute('name');
		if (instance.id) div.id=instance.id; else div.id=name;
		instance.parentNode.insertBefore(div, instance);
		instance.parentNode.removeChild(instance);
		html ='<img alt="Invalid picture" align="absmiddle" onerror="LoadDefault(this);" id="'+div.id+'_img" src="'+MyCMS.STFOLDER+'/getthumb.php?file='+value+'"  /> ';
		html+='<input id="'+div.id+'_url" name="'+name+'" type="hidden" value="'+value+'" /> ';
		html+='<a href="javascript:;" onclick="browseforpic(\''+div.id+'\');">Browse</a> ';
		html+='<a href="javascript:;" onclick="ClearPicture(\''+div.id+'\');">Clear</a> ';
		div.innerHTML=html;
	}
}

function LoadDefault(obj) {
	var Default=MyCMS.STFOLDER+'/getthumb.php?file=0.jpg';//
	if (obj.src.indexOf(Default)!=-1) return;
	obj.src=Default;
}

function ClearPicture(id) {
	LoadDefault($(id+'_img'));
	$(id+"_url").value="";
}

function ColorizeTable_Init() {
	if (!document.getElementsByClassName) return;
	var instances=document.getElementsByClassName("colorize");
	for (var x=0; x<instances.length; x++) {
		var instance=instances[x];
		ColorizeTable(instance);
	}
}

function ColorizeTable(instance) 
{
	if (instance.tagName!="TABLE") return;
	if (instance.getAttribute("alternate")) alternate=parseInt(instance.getAttribute("alternate"));	else alternate=2;
	if (instance.getAttribute("header")) 	header=parseInt(instance.getAttribute("header")); 		else header=1;
	if (instance.getAttribute("repeat")) 	repeat=parseInt(instance.getAttribute("repeat"));		else repeat=0;
	m=1;
	for (var y=header; y<instance.rows.length; y++) {
		if ((header>0) && (repeat>1) && ((y-header)%repeat==0) && (y-header>0)) {
			instance.rows[0].parentNode.insertBefore(instance.rows[0].cloneNode(-1), instance.rows[y]);
			continue;
		}
		Element.extend(instance.rows[y]);
		while (true) {
			v=instance.rows[y].className.match('colorize-row[0-9]+');
			if (!v) break;
			instance.rows[y].removeClassName(v[0]);
		}
		instance.rows[y].addClassName("colorize-row"+(m%alternate));
		m++;
	}
}

radio_value=function (form, name, value) {
	var f=document.forms[form];
	if (!f) return;
	var r=f[name];
	if (!r) return;
	if (r.length) {
		for (var x=0; x<r.length; x++) if (r[x].value==value) { r[x].checked=true; break; }
	} else {
		if (r.value=value) r.checked=true;
	}
}

var genId=0;

function generateId(obj) {
	if (!obj.id) {
		obj.id="MyCMS"+genId;
		genId++;
	}
	return obj.id;
}

function ShowException(e) {
	msg="";
	msg+="Name: "+ e.name + "\n";
	msg ="Message: "+ e.message + "\n";
	msg+="File name: "+ e.fileName + "\n";
	msg+="Line Number: "+ e.lineNumber + "\n";
	msg+="Stack: \n";
	msg+=e.stack;
	alert(msg);	
}

function OpenFull(src, w, h) {
	p="";
	if (w>0) p+="width="+(w+32)+",";
	if (h>0) p+="height="+(h+32)+",";
	window.open(src,'w1',p+'status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes');
	return false;
}

_FullPath=function () {
    var m=new Array(), v=0;
    if (arguments[0].substr(0, 1)=="/") m[v++]="";
    for (var x=0; x < arguments.length; x++) {
        a=arguments[x];
        if (a=="") continue;
        if (a.substr(a.length-1, 1)=="/") a=a.substr(0, a.length-1);
        if (a=="") continue;
        if (a.substr(0, 1)=="/") a=a.substr(1);
        if (a=="") continue;
        m[v++]=a;
    }
    return m.join('/');
}


function ConfirmDelete(obj) {
	if (!confirm('You are about to delete item, Are you sure?')) return false;
	if (obj.href.indexOf("?")==-1) obj.href+="?";
	obj.href+='&confirm=1&redirect='+ encodeURIComponent( location.href);
	return true;
}

function ConfirmDelete2(message, obj) {
	if (!confirm(message)) return false;
	if (obj.href.indexOf("?")==-1) obj.href+="?";
	obj.href+='&confirm=1';
	return true;
}


function SwapImage(o, img) {
	o.old=img;
	o.onmouseover=function () {
		img=this.src;
		this.src=this.old;
		this.old=img;
	}
	o.onmouseout=function () {
		img=this.src;
		this.src=this.old;
		this.old=img;
	}
}

function isFunction(f)
{
	if (!f) return false;
	if (typeof f=='function')
	{
		return f;
	} else if (typeof f == 'string' && eval('typeof ' + f)=='function')
	{
		return eval(f);
	}
	return false;
}

function selectvalue(id, value) {
	cmb=$(id);
	for (i=0; i < cmb.options.length; i++) {
		if (cmb.options[i].value==value) {
			cmb.options[i].selected=true;
			break;
		}
	}
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function openWindow(obj, w, h, center) {

	nm="";
	if (obj.innerText) {
		nm=	obj.innerText;
	} else if (obj.textContent) {
		nm=obj.textContent;
	}
	if (center) {
		wleft = (screen.width - w) / 2;
		wtop  = (screen.height - h) / 2;
	} else {
		wleft=0;
		wtop =0;
	}
	v=window.open(obj.href, 'w1', 'left=' + wleft + ', top=' + wtop + ',width='+w+',height='+h+',status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=no');
	if (v) {
		//v.resizeTo(w, h);
		// Just in case left and top are ignored
		//v.moveTo(wleft, wtop);
		v.focus();
		return false;
	} else {
		return true;	
	}
}
