// JavaScript Document
var JQ=jQuery.noConflict();
function ClientInfo(){};
if( navigator.userAgent.search(/MSIE/i)!= -1 ){
	ClientInfo.prototype.browser = 'E';
}else if(navigator.userAgent.search(/Firefox/i)!= -1){
	ClientInfo.prototype.browser = 'F';
}else if(navigator.userAgent.search(/Netscape/i)!= -1){
	ClientInfo.prototype.browser = 'N';
}else{
	ClientInfo.prototype.browser = 'W3C';
}
client = new ClientInfo();

String.prototype.ltrim= function(){ // ======== ltrim ==============	     
	 data = this.valueOf() ; 
	 data = data.replace(/^\s/ , '' ); 
	 data = data.replace(/^\r/ , '' ); 
	 data = data.replace(/^\n/ , '' );
	 data = data.replace(/^\r/ , '' ); 
	if( data.search(/^\S/) == -1 &&  data.length > 0  ){
		 data = data.ltrim();	 
	 }
	 return data ; 			 
}

String.prototype.rtrim= function(){
// ======== rtrim ==============	     
	 data = this.valueOf() ; 
	 data = data.replace(/\s$/ , '' ); 
	 data = data.replace(/\r$/ , '' ); 
	 data = data.replace(/\n$/ , '' );
	 data = data.replace(/\r$/ , '' ); 
	 if( data.search(/\S$/) == -1 &&  data.length > 0  ){
		 data = data.rtrim();	 
	 }
	 return data ; 			 
}

String.prototype.trim= function(){
	data = this.valueOf() ; 
	data = data.ltrim();
	data = data.rtrim();
	return data ; 
}

Array.prototype.inArray = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
}

addslashes = function(strv) {
    return (strv+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0").replace(/\r/g, "\\r").replace(/\n/g, "\\n");
}

function doRound(x, places) {
	return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);
}

function numberFormat(value,places){
	var svalue = '';
	var sign = '';
	value = value == '' ? 0.00 : parseFloat(value); 
	if(value<0.00){ 
		sign = '-';
		value = value * -1;
	}
	var dvalue = '';
	var dlen = 0;
	if(parseFloat(value)>0){
		value = doRound(value,places);
	}
	for(i=0 ; i<places ; i++){
		dvalue = dvalue + '0';
	}
	svalue = '' + value + '';
	if( svalue.search(/\./) != -1 ){
		values = svalue.split('.')
		dlen = places - values[1].length;
		dvalue = ''+ values[1] + dvalue.substr(0,dlen) + '' ;
		svalue = ''+ values[0]  + '.' + dvalue ;
	}else{
		svalue = ''+svalue+'.'+dvalue;
	}
	values = svalue.split('.') ;
	fvalues = Array('','','','','','','');
	svalue = ''+ values[0] ; 
	var j = 6;
	for( j=6 ; j>=0 ; j--){
	 	fvalues[j] = svalue.substr(0, (svalue.length-(j*3))) ;
	 	svalue = svalue.substr( fvalues[j].length,(svalue.length-fvalues[j].length))
	} 
	svalue  = '';
	for(i=(fvalues.length-1); i>=0; i--){
		svalue = svalue.trim()!='' ? svalue + ',' : svalue ;
		svalue = svalue+fvalues[i]
	}
	svalue = sign+''+svalue + '.' + values[1];
	return svalue ;
}

function ValidateElement( fid , callbackfn ){
	var flag = 0;	
	var optional = false;
	callbackfn = (typeof(callbackfn)!= 'undefined'? callbackfn:'') ;
	JQ('div.require_field_error').hide();
	JQ('div.require_field_error').html("");
	ve = JQ('form#'+fid+' input#validate').val();//JQ('form#'+fid).children('input#validate').val(); //
	// alert(fid + ' :: ' + ve);
	if(typeof(ve)== 'undefined') return false;
	ve_arr = ve.split('||');	
	ele_arr = new Array();
	for(var c = 0 ; ve_arr[c];c++){
		eid = ve_arr[c].split(':');		
	//set default values 	
		optional = false;
		errormsg = '';
	// end of setting defalult values 
		for(i=2 ; i < eid.length ; i++){ // ================================================= FOR OPTIONAL 
			if( eid[i] == 'optional' )	optional = true;
			if( eid[i].search(/^(errormsg)/ != -1) ){	
				errormsg = eid[i].replace(/^(errormsg)/,'');
			}
		}	
		if(eid[1] == 'blank'){	// ============================================================= BLANK 
			evf = JQ('form#'+fid+' #'+eid[0]).val();	
			if(evf.replace(/\s/g, '') == ''){
				JQ('<div class="require_field_error">Required field must not be blank</div>').insertAfter( JQ('form#'+fid+' #'+eid[0]));
				flag = 1;
			}
		}else if(eid[1] == 'email'){ // ===================================================== EMAIL 
			evf = JQ('form#'+fid+' input#'+eid[0]).val();
			if(evf.search(/\S/)==-1){
				if(!optional){
					JQ('<div class="require_field_error">Required field must not be blank</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}else{
				filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})+$/;
				if(!filter.test(evf)){	
					JQ('<div class="require_field_error">Invalid Email</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}
		}else if(eid[1] == 'alphanumeric'){ // ============================================== ALPHA-NUMERIC
			evf = JQ('form#'+fid+' input#'+eid[0]).val();
			if(evf.search(/\S/)==-1){
				if(!optional){
					JQ('<div class="require_field_error">Required field must not be blank</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}else{
				filter  = /^([a-zA-Z0-9])+$/;
				if(!filter.test(evf)){	
					JQ('<div class="require_field_error">Invalid Entry! Enter A-Z 0-9 only.</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}
		}else if(eid[1] == 'numeric'){ // ============================================== NUMERIC
			evf = JQ('form#'+fid+' input#'+eid[0]).val();
			if(evf.search(/\S/)==-1){
				if(!optional){
					JQ('<div class="require_field_error">Required field must not be blank</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}else{
				filter  = /^([0-9\.])+$/;
				if(!filter.test(evf)){	
					JQ('<div class="require_field_error">Invalid Entry! Enter 0-9 or 0-9.0-9 only.</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}
		}else if(eid[1] == 'alphanumeric2'){ //=============================================== ALPHA-NUMERIC2 + ( - , _ , . )
			evf = JQ('form#'+fid+' input#'+eid[0]).val();
			if(evf.search(/\S/)==-1){
				if(!optional){
					JQ('<div class="require_field_error">Required field must not be blank</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}else{
				filter  = /^([a-zA-Z0-9_\.\-])+$/;
				if(!filter.test(evf)){	
					JQ('<div class="require_field_error">Invalid Entry! Enter A-Z 0-9 , - _ only.</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}
		}else if(eid[1] == 'phone'){ //=============================================== Phone Number= NUMERIC + (+)
			evf = JQ('form#'+fid+' input#'+eid[0]).val();
			if(evf.search(/\S/)==-1){
				if(!optional){
					JQ('<div class="require_field_error">Required field must not be blank</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}else{
				filter = /^((([\+]{1,1})+([123456789]{1,1}))|([123456789]{1}))+([0-9]{9,12})+$/ ;
				if(!filter.test(evf)){
					JQ('<div class="require_field_error">Invalid Entry!<div>(e.g. +919433008682, 9433508566)</div></div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
					flag = 1;
				}
			}
		}else if(eid[1] == 'selected'){ //======================================================== COMBO
			evf = JQ('form#'+fid+' select#'+eid[0]).val();	
			if(evf.replace(/\s/g, '') == ''){
				JQ('<div class="require_field_error">Required field must be selected</div>').insertAfter( JQ('form#'+fid+' select#'+eid[0]));			flag = 1;
			}
		}else if(eid[1] == 'password'){ //======================================================= PASSOWRD
			evf = JQ('form#'+fid+' input#'+eid[0]).val();
			pwd = JQ('form#'+fid+' input#confirm_pwd').val();
			if(evf.replace(/\s/g, '') == '' && !optional ){
				JQ('<div class="require_field_error">Required field must not be blank</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));
				flag = 1;
			}
			if(typeof(pwd) != 'undefined' && evf != pwd){

				JQ('<div class="require_field_error">Password does not match to confirm!</div>').insertAfter( JQ('form#'+fid+' input#'+eid[0]));

				flag = 1;

			}

			

		}else if(eid[1] == 'checked'){

			evf = 0 ;

//checking for radio

			JQ('form#'+fid+' :radio').each(function (i) {

				//	alert(  JQ(this).attr("name") + ' : '  + JQ(this).attr("checked")  )	

				if ( JQ(this).attr("name") == eid[0]  ) {

					 if( JQ(this).attr("checked") ) evf++ ;

					} 

					chb= JQ(this);

				});

//for check box

		JQ('form#'+fid+' :checkbox').each(function (i) {

			   //alert(  JQ(this).attr("name") + ' : '  + JQ(this).attr("checked")  )

				if ( JQ(this).attr("name") == eid[0]  ) {

					 if( JQ(this).attr("checked") ) evf++ ;

					} 

					chb= JQ(this);

				});

			if(evf == 0 ){

			//	chb.parent().append('<div class="require_field_error">Atleast one must be checked</div>');
			     errormsg = (errormsg=='') ? '<div class="require_field_error">Atleast one must be checked</div>' : '<div class="require_field_error">' + errormsg + '</div>' ;
				//chb.parent().append('<div class="require_field_error">Atleast one must be checked</div>');
				
				chb.parent().append(errormsg);
				flag = 1;

				flag = 1;

			} 

		}else if(eid[1] == 'formname'){

			evf = JQ('form#'+fid+' input#'+eid[0]).val();

		}

		ele_arr.push(eid[0]+' : \''+evf+'\'');

	}

    // ================================================== NOW SUBMIT DATA ============================

	if(flag == 1){

		appearCenter('add_popup_box');

		return false;	

	}else if(callbackfn == 'SelfSubmit'){

		appearCenter('add_popup_box');

		return true;	

	}

	edata = FormElementData(fid);

	if(edata == false){

		appearCenter('add_popup_box');

		return false;

	} 

	wait(true);

	var method = JQ('form#'+fid).attr('method') ;

	if(method == 'get')

		eval('JQ.get(JQ(\'form#\'+fid).attr(\'action\'),{ajx:true,'+ edata +'}, function(data){wait(false);'+ callbackfn +';});');

	else

		eval('JQ.post(JQ(\'form#\'+fid).attr(\'action\'),{ajx:true,'+ edata +'}, function(data){wait(false);'+ callbackfn +';});');

	return true;	

}



function getArrayElement( frm , ele_name , flag   ){ 

	var result = '' ; 

	var resultArr = Array(''); 

    var addSeparator  = false ; 

	var i = 0 ;

	var j=0 ;

	var separator  = '|'; 

	flag = typeof(flag) != 'undefined' ? flag : true;

	if( document.getElementsByName( ele_name ) ){ 

	   var ele = document.getElementsByName(ele_name) ;  

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

		   if(ele[i].form == frm ){

					if(ele[i].type == 'radio' || ele[i].type == 'checkbox'  ) {	

						if(ele[i].checked) {

							if(!flag) {

								if(addSeparator) result = result + separator ; 

								result = result +  ele[i].value ; 

								addSeparator = true ; 	

							} else {

								resultArr[j] = ele[i].value ; 

								j++;

							}

						}

					} else if(ele[i].type == 'select' && (!ele[i].multiple)  )	{

						if(!flag) {

							if(addSeparator) result = result + separator ; 

							result = result +  ele[i][ele[i].selectedIndex].value ; 

							addSeparator = true ;  

						} else {

								resultArr[j] = ele[i][ele[i].selectedIndex].value ; 

								j++; 

						}

					} else	{	

						if(!flag) {

							if(addSeparator) result = result + separator ; 

							result = result +  ele[i].value ; 

							addSeparator = true ; 

						} else {

								resultArr[j] = ele[i].value ; 

								j++;

						}				

					}

			   }

		   } //end for  i 	   

	}

 return  (flag ) ? resultArr : result ; 

} // end of function 





function FormElementData(form_id){

	if(typeof(form_id) == 'undefined')

		return false;

	var nofe = document.getElementById(form_id).elements.length;

	var felm = document.getElementById(form_id);

	var str = '';

	var arr_element = false;

	var element_name = '';

	var readElements = '';

	for(c = 0; c < nofe; c++){

		element_name =  felm.elements[c].name;

		if( typeof(element_name) == 'undefined' ){

			continue ;

		}

		if( element_name.search(/(\[)+(([a-zA-Z0-9\-])|())+(\])+$/)!=-1 ){ //For Array Element

			element_val = Array('');

			if(readElements.indexOf( '\''+ element_name + '\'' ) == -1 && felm.elements[c].type !='button'  ){

				// && element_name!='validate'

				element_val=getArrayElement( felm , element_name ,  true   );

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

				   element_val[i]   = '\''+ addslashes(element_val[i]) + '\'';

				}

				str+= '\'' + element_name + '\'' +':Array('+element_val+'),';

				readElements = readElements + '\'' + element_name + '\',' ;

			}

		}else{ //For Non Array Element

			element_val = '';

			if(readElements.indexOf(  '\''+ element_name + '\'' ) == -1 && felm.elements[c].type !='button'   ){ 

			//&& felm.elements[c].type !='button' && element_name!='validate'

				element_val = getArrayElement( felm , element_name ,  false   ) ;

				element_val = addslashes(element_val);

				str+= element_name  +':\''+element_val+'\','; 

				readElements = readElements + '\'' + element_name + '\',' ;

				//alert(element_name+" "+element_val);

			}

		}

	}

	str = str.replace(/,$/ ,'');

	if(str != '')

		return str;

	else

		return false;

}



function avoid(){};


