// NOTES
// the Ajax post below is from Jquery. So, Jquery must be included in web page.
//
// SAMPLE USE
//function validate()
//{
//    clearvalidation("");
//    requiredtextbox("validation", "txtusername", "First Name");
//    requireddropdown("validation", "drptest", "dropdown");
//    comparepasswords("validation", "txtpassword", "txtpassword2");
//    validateemail("validation", "txtemail");
//    requiredcheckbox("validation", document.frmregister.terms.checked, "Terms and conditions");
//    postAjax("validation", "contact.cc.php", "frmemail");
//    var textbox = ['txtemail', 'txtfullname', 'txtphone'];
//    var dropdown = new Array(); 
//    clearcontrols("validation", textbox, dropdown);
//}


function help(ctl)
{
    if(document.getElementById(ctl).style.display == "none")  $("#"+ctl).show("fold", {}, 1000);
    else  $("#"+ctl).hide("fold", {}, 1000);
}

function displayValidation(validation_div)
{
    if( getDivValue(validation_div) != "" ) {
        document.getElementById(validation_div).style.display = "block";
    } else {
        document.getElementById(validation_div).style.display = "none";
    }
}
function getInputValue(ctl)
{     
   return document.getElementById(ctl).value; 
}
function setInputValue(ctl, value)
{     
    document.getElementById(ctl).value = value;
}
function getDivValue(ctl)
{     
   return document.getElementById(ctl).innerHTML;
}
function setDivValue(ctl, value)
{     
   document.getElementById(ctl).innerHTML = value; 
}
function getDropdownValue(ctl) {
    var e = document.getElementById(ctl);
    return e.options[e.selectedIndex].value;
} 
function clearvalidation(validatediv)
{     
   document.getElementById(validatediv).innerHTML = "";
}
function requiredtextbox(validatediv, ctltovalidate, msg)
{  
   v = trim(document.getElementById(ctltovalidate).value);
   if(v=="") document.getElementById(validatediv).innerHTML += msg + " is required<br/>"; //document.getElementById(validatediv).style.display = "block"; 
}
function requireddropdown(validatediv, ctltovalidate, msg)
{ 
   index = document.getElementById(ctltovalidate).selectedIndex;
   if(index == 0) document.getElementById(validatediv).innerHTML += msg + " is required<br/>";   
}
function getradiobuttonlistvalue(field) 
{
    for (i = 0; i < field.length; i++) 
        if(field[i].checked == true) { return field[i].value; }
}
function requiredradiolist(validatediv, ctltovalidate, msg)
{  
   // only works for first form !!! 
   v = getradiobuttonlistvalue(document.forms[0].elements[ctltovalidate]);
   
   if(v=="" || v==undefined) document.getElementById(validatediv).innerHTML += msg + " is required<br/>";    
}
function requiredradiolist(validatediv, frm, ctltovalidate, msg)
{  
   v = getradiobuttonlistvalue(document.forms[frm].elements[ctltovalidate]);
   
   if(v=="" || v==undefined) document.getElementById(validatediv).innerHTML += msg + " is required<br/>";    
}
function requiredcheckbox(validatediv, ctltovalidate, msg)
{  
    if(!(document.getElementById(ctltovalidate).checked))
        document.getElementById(validatediv).innerHTML += msg + " is required<br/>";    
}
function requiredtextarea(validatediv, ctltovalidate, msg)
{  
   v = trim(document.getElementById(ctltovalidate).value);
   if(v=="") document.getElementById(validatediv).innerHTML += msg + " is required<br/>";  
}
function comparepasswords(validatediv, ctltovalidate1, ctltovalidate2)
{  
   v1 = document.getElementById(ctltovalidate1).value;
   v2 = document.getElementById(ctltovalidate2).value; 
   if(v1!=v2) document.getElementById(validatediv).innerHTML += "Passwords do not match<br/>";
}
function postForm(validatediv, formname)
{  
   if(document.getElementById(validatediv).innerHTML=="")  
        document.forms[ formname ].submit();               
}
function validateemail(validatediv, ctltovalidate)
{  
   v = document.getElementById(ctltovalidate).value;    
   apos=v.indexOf("@");
   dotpos=v.lastIndexOf(".");
   if(apos<1||dotpos-apos<2) document.getElementById(validatediv).innerHTML += "Valid Email is required<br/>";       
}
function postAjax(validatediv, url, formName, divresult)
{
    //alert( $("#"+formName).serialize() );
    //document.getElementById(divresult).innerHTML = $("#"+formName).serialize();
    
    if(document.getElementById(validatediv).innerHTML=="")         
        $.post(url, $("#"+formName).serialize(), function(data){ document.getElementById(divresult).innerHTML=data; } );     
}
function postAjaxWithCall(validatediv, url, formName, divresult, functioncall)
{
    if(document.getElementById(validatediv).innerHTML=="")         
        $.post(url, $("#"+formName).serialize(), function(data){ 
            document.getElementById(divresult).innerHTML=data;
            //alert("ll");
            eval(functioncall);
            //ParseAjaxResponse(functioncall);
        } 
    );     
}
function postAjaxWithClearControls(validatediv, url, formName, divresult, arytextbox, arydropdown)
{
    if(document.getElementById(validatediv).innerHTML=="")         
        $.post(url, $("#"+formName).serialize(), function(data){
                    if(data=='fail')
                        document.getElementById(divresult).innerHTML=data;
                    else {                        
                        clearcontrols(validatediv, arytextbox, arydropdown);
                        document.getElementById(divresult).innerHTML=data;
                    } 
                } 
              );     
}
function postAjaxWithRedirect(validatediv, url, formName, divresult, redirecturl)
{   
    //alert('test');
    //alert(redirecturl);
    //return;
    if(document.getElementById(validatediv).innerHTML=="")         
        $.post(url, $("#"+formName).serialize(), function(data)
            { 
                //alert(data);
                result=data;
                if( result == true || result == 'redirect' ) window.location.href = redirecturl;
                else document.getElementById(divresult).innerHTML=result;
            } 
        );     
}
function postAjaxWithFadeMessage(validatediv, url, formName, divmessage)
{
    //$arr = array ('result'=>'success', 'message'=>'Profile updated');
    //echo json_encode($arr);
    if(document.getElementById(validatediv).innerHTML=="")         
        $.post(url, $("#"+formName).serialize(), 
                    function(data){ 
                        var o = jQuery.parseJSON( data );
                        
                        if(o.result == "success") {
                            document.getElementById(divmessage).innerHTML = o.message;
                            $("#"+divmessage).fadeIn(500); 
                            setTimeout("$('#"+divmessage+"').fadeOut(500);", 3500);   
                        }                        
                    } 
    );     
}

function postAjaxWithRedirectVariables(validatediv, url, formName, divresult)
{   
    if(document.getElementById(validatediv).innerHTML=="")         
        $.post(url, $("#"+formName).serialize(), function(data)
            { 
                result=data;
                // if success, substring to get url with variables to redirect to
                if( result.substring(0, 8) == 'redirect' ) { window.location.href = result.substring(9); } 
                else document.getElementById(divresult).innerHTML=result;
            } 
        );     
}
function getAjax(url, divresult)
{    
    $.get(url, function(data){ document.getElementById(divresult).innerHTML=data; });      
}
function getAjaxWithValidation(validatediv, url, divresult)
{   
    if(document.getElementById(validatediv).innerHTML=="")  
        $.get(url, function(data){ document.getElementById(divresult).innerHTML=data; });      
}
function getAjaxWithEvalScript(url, divresult)
{
    //alert( $("#"+formName).serialize() );
    //document.getElementById(divresult).innerHTML = $("#"+formName).serialize();
    
	$.get(url, function(data){ 
			document.getElementById(divresult).innerHTML=data; 
			ParseAjaxResponse(data);
	} );     
}
function postAjaxWithEvalScript(validatediv, url, formName, divresult)
{
    //alert( $("#"+formName).serialize() );
    //document.getElementById(divresult).innerHTML = $("#"+formName).serialize();
    
    if(document.getElementById(validatediv).innerHTML=="")         
        $.post(url, $("#"+formName).serialize(), function(data){ 
                document.getElementById(divresult).innerHTML=data; 
                ParseAjaxResponse(data);
        } );     
}
// http://www.yasha.co/Ajax/execute-javascript-on-Ajax-return/article-2.html
function ParseAjaxResponse(somemixedcode) { 
    var source = somemixedcode; 
    var scripts = new Array(); 
    while(source.indexOf("<script") > -1 || source.indexOf("</script") > -1) { 
        var s = source.indexOf("<script"); 
        var s_e = source.indexOf(">", s); 
        var e = source.indexOf("</script", s); 
        var e_e = source.indexOf(">", e); 
        scripts.push(source.substring(s_e+1, e)); 
        source = source.substring(0, s) + source.substring(e_e+1); 
    } 
    for(var x=0; x<scripts.length; x++) { 
        try { eval(scripts[x]); } 
        catch(ex) { } 
    } 
    return source; 
}

function clearcontrols(validatediv, arytextbox, arydropdown)
{    
    if(document.getElementById(validatediv).innerHTML=="") {
        for (var i=0; i<arytextbox.length; i++)  document.getElementById(arytextbox[i]).value="";    
        for (var i=0; i<arydropdown.length; i++)  document.getElementById(arydropdown[i]).selectedIndex=0;    
    }    
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

// cookie functions
function createCookie(cookieName, cookieValue) {
    var theDate=new Date();
    
    theDate.setFullYear(theDate.getFullYear()+1);
    cookieName=escape(cookieName);
    cookieValue=escape(cookieValue);
    
    if(document.cookie != document.cookie)
        {index = document.cookie.indexOf(cookieName);}
    else
        { index = -1;}
    
    if (index == -1)
    {
        document.cookie=cookieName+"="+cookieValue+"; expires="+theDate;
    }
}
function getCookie(name) {
    name=escape(name)
    if(document.cookie)
    {
        index = document.cookie.indexOf("; "+name+"=");
        if (index<0 && document.cookie.indexOf(name+"=")==0) index=-2;
        else if (index<0) return false;
    
        index+=2;
        if (index != -1)
        {
            cookieNameStart = (document.cookie.indexOf("=", index) + 1);
            cookieNameEnd = document.cookie.indexOf(";", index);
            
            if (cookieNameEnd == -1) {cookieNameEnd = document.cookie.length;}
                return unescape(document.cookie.substring(cookieNameStart, cookieNameEnd));
        }
    }
}
