//@ TAUFEEQ UR REHMAN

//@ JAVASCRIPT GENERAL LIBRARY

//@ DEVELOPED AT MBLUE DESIGNS RWP PAKISTAN

//@ VERSION 1.0

//@ COPYRIGHT TAUFEEQ UR REHAMN

//@ LAST MODIFIED 4 APRIL 2008

/******************** PROTOTYPING ***********************************/

String.prototype.trim = function(){

    return this.replace(/^\s+|\s+$/g,"");

}

String.prototype.ltrim = function(){

    return this.replace(/^\s+/,"");

}

String.prototype.rtrim = function(){

    return this.replace(/\s+$/,"");

}

// int strpos(str);

//@ Finding the string position second argument is the optional and it specifys where to start the search

String.prototype.strpos = function(chars,startFromOptional) {

	if(startFromOptional){

	 	var i = this.indexOf( chars, startFromOptional ); 

	}else{

		var i = this.indexOf(chars); 

	}

     return i >= 0 ? i : false;

}

/*******************************************************/

Array.prototype.IndexOf = function(elm){

	var exists = false;

    for(i=0; i<this.length; i++){

        if(this[i] == elm){

            exists = i;

			break;

        }

    }

    return exists;

}

Array.prototype.removeIndex = function (ind){

	 var tmp = new Array();

	 for(i=0; i<this.length; i++){

	 	if(i == ind) continue;

		tmp[tmp.length] = this[i];

	 }

	return tmp;

}

/*******************************************************/

function redirectTo(loc){

    location.href = loc;

}

/*******************************************************/

//@ bool removeChild(element)

//@ remove a dom element

function removeChild(elm){

	if(!elm){

		alert("No Element found");

		return false;

	}

	if(!elm.parentNode){

		alert("Unable to find parent node of Element "+elm);

		return false;

	}

	var prnt = elm.parentNode;

	return prnt.removeChild(elm);

}

/*******************************************************/

function returnSelectedCheckboxes(xclude){

    selectedCtrls = "";

    ctrlsArray = getElementsByType("checkbox");

    for (i=0; i<ctrlsArray.length; i++){

        if(ctrlsArray[i].checked && (ctrlsArray[i].name != xclude || ctrlsArray[i].id != xclude) ){

            if(ctrlsArray[i].name){

                selectedCtrls += "'" + ctrlsArray[i].name + "',";

            }

            else{

                selectedCtrls += "'" + ctrlsArray[i].id + "',";

            }

        }

    }

    if(selectedCtrls.length == 0){

        alert("Please select at leaset one record");

        return false;

    }

    else{

        selectedCtrls = selectedCtrls.substring(0,selectedCtrls.length-1);

        return selectedCtrls;

    }

}



/*******************************************************/

function getElementsByType(ctype){

    j = 0;

    p = Array();

    ctrlsArray = document.getElementsByTagName("input");

    for (i=0; i<ctrlsArray.length; i++){

        if(ctrlsArray[i].type == ctype){

            p[j++] = ctrlsArray[i];

        }

    }

    return p;

}

/*******************************************************/

function getElementsByContainer(ctype,d){

    j = 0;

    p = Array();

    var dv = document.getElementById(d);

    var ctrlsArray = dv.getElementsByTagName("input");

    for (i=0; i<ctrlsArray.length; i++){

        if(ctrlsArray[i].type == ctype){

            p[j++] = ctrlsArray[i];

        }

    }

    return p;

}

/*******************************************************/

function selectComboOption(cntrl,val){

    if(val != ""){

        for(i = 0; i < cntrl.options.length; i++){

            if(cntrl.options[i].value == val || cntrl.options[i].text == val){

                selindex = i;

                break;

            }

        }

        cntrl.selectedIndex = selindex;

    }

}

/*******************************************************/

function selectComboOptionById(cntrl,val){

    cntrl = document.getElementById(cntrl);

    if(val != ""){

        for(i = 0; i < cntrl.options.length; i++){

            if(cntrl.options[i].value == val || cntrl.options[i].text == val){

                selindex = i;

                break;

            }

        }

        cntrl.selectedIndex = selindex;

    }

}

/*******************************************************/

function toggleSelect(v){

    ctrlArray = getElementsByType("checkbox");

    if(v){

        for(i=0; i<ctrlArray.length; i++){

            ctrlArray[i].checked = true;

        }

    }

    else{

        for(i=0; i<ctrlArray.length; i++){

            ctrlArray[i].checked = false;

        }

    }

}

/*******************************************************/

function toggleCheckbox(x){

    ctlArray = getElementsByType("checkbox");

    flag = false;

    for(i=0; i<ctlArray.length; i++){

        if(ctlArray[i].checked == false && ctlArray[i].name != x.name){

            flag = true;

        }

    }

    if(!flag)

    x.checked = true;

    else

    x.checked = false;

}

/*******************************************************/

function resetTextBoxes(fldString){

    fldArray = fldString.split(",");

    for(i=0; i<fldArray.length; i++){

        document.getElementById(fldArray[i]).value = "";

    }

    return false;

}

/*******************************************************/

var activeTrs = new Array();

function assignColor(tr,oldColor,newColor){

    if(activeTrs[tr.rowIndex]){

        tr.bgColor = oldColor;

        activeTrs[tr.rowIndex] = 0;

    }

    else{

        tr.bgColor = newColor;

        activeTrs[tr.rowIndex] = 1;

    }

}

/*******************************************************/

function mouseOutColor(tr,oldColor,newColor){

    if(activeTrs[tr.rowIndex])

    tr.bgColor = newColor;

    else

    tr.bgColor = oldColor;

}

function validateInt(ctrl){

	if(typeof(ctrl) != "object"){

		ctrl = document.getElementById('ctrl');

	}

	if(isNaN(ctrl.value)){

		alert("Please enter numeric value");

		ctrl.value = "";

		return false;

	}

	return true;

}

/*******************************************************/

function validateInteger(ctrl,elm,e,msg){

	if(typeof(ctrl) != "object"){

		ctrl = document.getElementById('ctrl');

	}

    if(window.event){ // IE

        keynum = e.keyCode

    }

    else if(e.which){ // Netscape/Firefox/Opera

        keynum = e.which

    }

    switch(keynum){

        case 8: //for back space

        case 9: // for tab key

        case 13: // for enter key

        case 18: // for alt key

        case 16: // for both shift keys

        case 17: // for both control keys

        case 35: // for end key

        case 36: // for home key

        case 37: // for left key

        case 39: // for right key

        case 45: // for insert key

        case 46: // for del key

        case 96: // for numeric 0

        case 97: // for numeric 1

        case 98: // for numeric 2

        case 99: // for numeric 3

        case 100: // for numeric 4

        case 101: // for numeric 5

        case 102: // for numeric 6

        case 103: // for numeric 7

        case 104: // for numeric 8

        case 105: // for numeric 9

        case 116: // for F5 Key

        return true;

        break;

        case 189: // for - key

        case 109: // for - key

        for(i=0; i<elm.length; i++){

            if((elm.charAt(i)) == "-"){

                if(msg){

                    alert("Please Enter numeric value");

                }

                elm.charAt(i) = "";

                ctrl.value.elm;

                return false;

            }

        }

        break;

        case 190: // for alpha .

        case 110: // for numeric .

        for(i=0; i<elm.length; i++){

            if((elm.charAt(i)) == "."){

                if(msg){

                    alert("'.' has already been placed");

                }

                return false;

            }

        }

        break;

        default:

        keychar = String.fromCharCode(keynum)

        numcheck = /\d/

        $check = numcheck.test(keychar);

        if(!$check){

            if(msg){

                alert("Please Enter numeric value");

            }

            ctrl.value = "";

            return false;

        }

        return true;

        break;

    }

}

/*******************************************************/

function validateEmailByCtrl(ctrl_id,frm,ch_act){

	if(frm){

		frm = (document.frm?document.frm:document.getElementById(frm));

		if(ch_act) frm.action = "";

	}

	if(typeof(ctrl_id) == "object"){

		var ctrl = ctrl_id;

	}else{

		var ctrls = frm.getElementsByTagName("input");

		for(var i=0; i<ctrls.length; i++){

			if(ctrls[i].id == ctrl_id){

				var ctrl = ctrls[i];

				break;

			}

		}

	}

	if(ctrl.style.color != '#FF0000')

	var old_color = ctrl.style.color ;

	if (!validateEmail(ctrl.value)){

		ctrl.value="Invalid email";

		ctrl.style.color="#FF0000";

		return false;

	}else{

		ctrl.style.color = "#000000";

		return true;

	}

}

/*******************************************************/

function validateEmail(val){

	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val));

}

function validateEmails(){

    var valid=true;

    for(i=0;i<5;i++){

        cname="email"+(i+1);

        ctrl=document.getElementById(cname);

        ctrl.style.color="#000000";

        if(ctrl.value){

            if (!validateEmail(ctrl.value)){

                ctrl.value="Not Valid";

                ctrl.style.color="#FF0000";

                valid=false;

            }

        }

    }

    return valid;

}

/*******************************************************/

function selectCheckBox(ctrl,val,matchValue){

    if(val == matchValue){

        ctrl.checked = true;

    }

}

/*******************************************************/

function selectCheckBoxById(cid,val,matchValue){

    ctrl = document.getElementById(cid);

    if(val == matchValue){

        ctrl.checked = true;

    }

}



/*******************************************************/

function validateGreaterThanZero(ctrl,msg){

    if(isNaN(ctrl.value)){

        if(msg) alert("Please Enter numeric value");

        applyCtrlErrorCss(ctrl);

        ctrl.value = "";

        ctrl.focus();

        return false;

    }

    if(ctrl.value < 1){

        if(msg) alert("Enter value greater than zero ");

        applyCtrlErrorCss(ctrl);

        ctrl.value = "";

        ctrl.focus();

        return false;

    }

}

/*******************************************************/

function validateGreaterThanZeroById(ctrl,msg){

    ctrl = document.getElementById(ctrl);

    if(isNaN(ctrl.value)){

        if(msg) alert("Please Enter numeric value");

        ctrl.value = "";

        applyCtrlErrorCss(ctrl);

        ctrl.focus();

        return false;

    }

    if(ctrl.value < 1){

        if(msg) alert("Enter value greater than zero ");

        ctrl.value = "";

        applyCtrlErrorCss(ctrl);

        ctrl.focus();

        return false;

    }

}

/*******************************************************/

function isArray(obj){

    if (obj.constructor.toString().indexOf("Array") == -1)

    return false;

    else

    return true;

}



/*******************************************************/

function selectListOptions(ctrl,str){

    var str_array = null;

    str_array = str.split(",");

    var opts = ctrl.options;

    for(i=0; i<opts.length; i++){

        for(j=0; j<str_array.length; j++){

            if(ctrl.options[i].text == str_array[j]){

                ctrl.options[i].selected = true;

            }

        }

    }

}

/*******************************************************/

function applyCtrlErrorCss(ctrl){

    ctrl.style.border = "2px solid #ff0000";

}

/*******************************************************/

function checkDivRadio(divId,val){

    var dv = document.getElementById(divId);

    var elms = document.getElementsByTagName("input");

    for(i=0; i<elms.length; i++){

        if(elms[i].type == 'radio'){

            if(elms[i].value == val){

                elms[i].checked = true;

            }

        }

    }

}

/*******************************************************/

function checkDivCheckBoxesByName(divId,values,spliter){

    values = values.split(spliter);

    var dv = document.getElementById(divId);

    var elms = dv.getElementsByTagName("input");

    for(i=0; i<elms.length; i++){

        if(elms[i].type == 'checkbox'){

            for(v=0; v < values.length; v++){

                if(elms[i].name == values[v].trim()){

                    elms[i].checked = true;

                }

            }

        }

    }

}

/*******************************************************/

function checkDivCheckBoxesById(divId,values,spliter){

    values = values.split(spliter);

    var dv = document.getElementById(divId);

    var elms = dv.getElementsByTagName("input");

    for(i=0; i<elms.length; i++){

        if(elms[i].type == 'checkbox'){

            for(v=0; v < values.length; v++){

                if(elms[i].id == values[v].trim()){

                    elms[i].checked = true;

                }

            }

        }

    }

}

/*******************************************************/

function checkDivCheckBoxesByValue(divId,values,spliter){

    values = values.split(spliter);

    var dv = document.getElementById(divId);

    var elms = dv.getElementsByTagName("input");

    for(i=0; i<elms.length; i++){

        if(elms[i].type == 'checkbox'){

            for(v=0; v < values.length; v++){

                if(elms[i].value == values[v].trim() || elms[i].id == values[v].trim()){

                    elms[i].checked = true;

                }

            }

        }

    }

}

/*******************************************************/

function MM_jumpMenu(targ,selObj,restore){

    eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");

    if (restore) selObj.selectedIndex=0;

}

/*******************************************************/

function openit(url){

    window.open(url,'Status','width=200,height=120');

}

/*******************************************************/

function openit_large(url){

    testwindow=window.open(url,'Status','width=400,height=400,scrollbars=yes,statusbar=yes');

    testwindow.moveTo(500,100);

}

/*******************************************************/

function openWindow(theURL,winName,features){

    window.open(theURL,winName,features);

}

/*******************************************************/

function MM_openBrWindow(theURL,winName,features){

    window.open(theURL,winName,features);

}

/*******************************************************/

function changeBody(page){

    var parnt = window.parent;

    var cframe = parnt.mainframe;

    cframe.location = page;

}

/*******************************************************/

function confirmDelete(msg){

	if(confirm(msg)) return true;

	return false;

}

/*******************************************************/

function changeFrameSource(fid,act){

	if(act.substr(0,7) == 'http://')

		document.getElementById(fid).src = act;

	else

		document.getElementById(fid).src += act;

}

/*******************************************************/

function refreshMainFrame(obj){

	//var thedata = obj.parentNode.innerHTML = "";

	var IE = document.all?true:false;

	//window.location.reload();

	if(IE){

		var loc = window.parent.document.frames['mainframe'].location;

		window.parent.document.frames['mainframe'].location = loc;

	}else{

		var pr = window.parent;

		var dc = pr.document;

		var frm = dc.getElementById('mainFrame')

		var loc = frm.contentDocument.location;

		frm.contentDocument.location.href = loc;

	}



}

/*******************************************************/

function validateForm(ctrls,errclass,passlen,frm,alter_email){

	var firstCtrl = null;

	var retVal = true;

	var glue = "Enter ";

	var br = "<br />";

	var tc ;

	var ctrlArray = ctrls.split(",");

	for(ctrl=0; ctrl<ctrlArray.length; ctrl++)	{

		c = document.forms[frm].elements[ctrlArray[ctrl]];

		//if(!getParentForm(c,dv)) continue;

		s = ctrlArray[ctrl]+"_div";

		if(c.type == 'select-one' || c.type == 'file'){

			glue = "Select ";

			if(ctrlArray[ctrl] == "dd" ||ctrlArray[ctrl] == "mm" ||ctrlArray[ctrl] == "yy"){

				ctrlName = " Date of Birth";

			}else{

				ctrlName = ctrlArray[ctrl];

			}

		}else{

			glue = "Enter ";

			ctrlName = ctrlArray[ctrl];

		}

		prnt = c.parentNode;

		elm = document.getElementById("div_"+c.id);

		if(elm && elm != "undefined"){

			try{

				prnt.removeChild(elm);

			}catch(e){}

		}

		elm = document.createElement("div");

		elm.id = "div_"+c.id;

		prnt.appendChild(elm,c);

		elm.className = "";

		elm.innerHTML = "";

		if(c.value.trim() == ""){

			if(!firstCtrl){

				firstCtrl = c;

			}

//			alert(ctrlArray[ctrl]);

			retVal = false;

			elm.className = errclass;

			ctrlName = ctrlName.replace("_"," ");

			char = ctrlName.charAt(0).toUpperCase();

			elm.innerHTML = glue+char+ctrlName.substr(1,ctrlName.length);

		}

	}

	if(!retVal){

		firstCtrl.focus();

		return false;

	}

	if(!alter_email) alter_email = "email";

	if(document.forms[frm].elements[alter_email] && document.forms[frm].elements[alter_email] != "undefined"){

			c = document.forms[frm].elements[alter_email];

			prnt = c.parentNode;

			elm = document.getElementById("div_"+c.id);

			if(elm && elm != "undefined"){

				try{

					prnt.removeChild(elm);

				}catch(e){}

			}

			elm = document.createElement("div");

			elm.id = "div_"+c.id;

			elm.innerHTML = "";

			elm.ClassName = null;

			prnt.appendChild(elm,c);

		

		if(!validateEmail(document.forms[frm].elements[alter_email].value)){

			elm.className = errclass;

			elm.innerHTML = "Invalid Email";

			retVal = false;

			firstCtrl = c;

		}

	}

	if(!retVal){

		firstCtrl.focus();

		return false;

	}

	if(passlen == 0) return retVal;

	passArray = getElementsByContainer('password',frm);

	/*for(i=0; i<passArray.length; i++){

		alert(passArray[i].id);

	}*/

	if(passArray != ""){

	//alert(cntrl + " >> "+document.getElementById(cntrl).src);

		if(passArray[1]){

			c = passArray[0];

			prnt = c.parentNode;

			elm = document.getElementById("div_"+c.id);

			if(elm && elm != "undefined"){

				try{

					prnt.removeChild(elm);

				}catch(e){}

			}

			elm = document.createElement("div");

			elm.id = "div_"+c.id;

			elm.innerHTML = "";

			elm.ClassName = null;

			prnt.appendChild(elm,c);

			if(passArray[0].value.length < passlen){

				elm.className = errclass;

				elm.innerHTML = "Password should be minimum "+passlen+" characters";

				retVal = false;

				firstCtrl = c;

			}

			

			if(retVal){

				elm.className = null;

				elm.innerHTML = "";

				if((passArray[0].value.trim() != "") && passArray[0].value != passArray[1].value){

					passArray[0].value = "";

					passArray[1].value = "";

					elm.className = errclass;

					elm.innerHTML = "Password and confirm password dosen't match"

					retVal = false;

					firstCtrl = c;

				}

			}

		}

	}

	if(!retVal){

		firstCtrl.focus();

	}

//	return false;

	return retVal;

}

/*******************************************************/

function populateFormValues(frm,act){

	var inputs = frm.elements;

	var url = "";

	var val = false;

	for(var i=0; i<inputs.length; i++){

	  val = false;

	  if(inputs[i].type != "submit" && inputs[i].type != "button"){	

		if(inputs[i].type == "radio" || inputs[i].type == "checkbox"){

			if(inputs[i].checked){

				val = true;

			}

		}else{

			if(inputs[i].value){

				val = true;

			}

		}

	  }

	  if(val){

		url += inputs[i].name.trim()+"/"+inputs[i].value.trim()+"/";

	  }

	}

//	alert(url);

//	return false;

	frm.action = act+url;

	//return false;

}

/////*******************************************************************/////////////////

function getFormElements(frm){

	var inputs = frm.elements;

	var url = "";

	var val = false;

	for(var i=0; i<inputs.length; i++){

	  val = false;

	  if(inputs[i].type != "submit" && inputs[i].type != "button"){	

		if(inputs[i].type == "radio" || inputs[i].type == "checkbox"){

			if(inputs[i].checked){

				val = true;

			}

		}else{

			if(inputs[i].value){

				val = true;

			}

		}

	  }

	  if(val){

		url += inputs[i].name.trim()+"="+inputs[i].value.trim()+"&";

	  }

	}

	return url;

}

/*******************************************************/

function updatevals(id,catname,txtID,txtBox,pros)

{

	document.getElementById(txtID).value=id;

	document.getElementById(txtBox).value=unescape(catname);

	if(pros){

		clearProducts();

		loadxml2(id);

	}

}



/*******************************************************/

function getElementsByClassName(searchClass,node,tag) {

	var classElements = new Array();

	if ( node == null )

		node = document;

	if ( tag == null )

		tag = '*';

	var els = node.getElementsByTagName(tag);

	var elsLen = els.length;

	var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");

	for (i = 0, j = 0; i < elsLen; i++) {

		if ( pattern.test(els[i].className) ) {

			classElements[j] = els[i];

			j++;

		}

	}

	return classElements;

}

/*******************************************************/

//@to empty a control on clicking it

function emptyCtrlValue(ctrl,val){

	vals = val.split(",");

	for(var i=0; i<vals.length; i++){

		if(ctrl.value == vals[i]) 

			ctrl.value = "";

	}

}

/*******************************************************/

function getFormValues(frm,strict){

	if(typeof(frm) != "object"){

		var frm = document.getElementById(frm);

	}

	if(typeof(frm) != "object"){

		return false;

		alert("Please provide the form id or forObject");

	}

	var inputs = frm.elements;

	var url = "";

	var val = false;

	for(var i=0; i<inputs.length; i++){

	  val = false;

	  if(inputs[i].type != "submit" && inputs[i].type != "button"){	

		if(inputs[i].type == "radio" || inputs[i].type == "checkbox"){

			if(inputs[i].checked){

				val = true;

			}

		}else{

			if(inputs[i].value){

				val = true;

			}

		}

	  }

	 if(inputs[i].type != "button" && inputs[i].type != "submit"){

	  if(val){

		url += inputs[i].name.trim()+"/"+inputs[i].value.trim()+"/";

	  }else{

		  if(!strict){

	  		url += inputs[i].name.trim()+"/0/";

		  }

	  }

	 }

	}

	

	return url;

}

/*******************************************************/

function openInPanel(objForm,w,h,frameTitle){

	var url = objForm.action+getFormValues(objForm);

	GB_showCenter(frameTitle,url,h,w);

	return false;

}

/*******************************************************/



function checkStock(stock)

{	//alert(stock)

	if(stock<1){

		alert("Sorry item out of stock");

		return false;

	}

	return true;	

}



function displayCatForm(val)

{	//alert(val)

	if(val == 'main_category'){

		if(document.getElementById("main_category").style.display =='none'){

			document.getElementById("main_category").style.display = 'block';

			document.getElementById("sub_category").style.display = 'none';

		}

	}else if(val == 'sub_category'){

		if(document.getElementById("sub_category").style.display =='none'){

			document.getElementById("sub_category").style.display = 'block';

			document.getElementById("main_category").style.display = 'none';

		}

	}
	
}

function mopen(id)
{
		
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';


}

<!-- dd menu -->
<!--
var timeout         = 500;
var closetimer		= 0;
var ddmenuitem      = 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

}
// close showed layer
function mclose()
{
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

function orderBy(frm,val)
{
	//alert(val);
	document.sort.submit();
}

function checkSearchOptions(val)
{
	if(document.getElementById("gender").value == "" && document.getElementById("budget").value == "" && document.getElementById("keyword").value == ""){
		alert("Please select an option first");
		return false;
	}else{
		document.wishForm.action = root+"search-products/";
		document.wishForm.submit();
	}
}


// close layer when click-out
document.onclick = mclose; 
// -->