/*
 * File           : $Header: //depot/main/template-kit/template-kit-publication/src/main/webapp/template/version/javascript/formValidator.js#11 $
 * Last edited by : $Author: shud $ $Date: 2008/02/28 $
 * Version        : $Revision: #11 $
 *
 * Copyright (C) 2007 Escenic AS.
 * All Rights Reserved.  No use, copying or distribution of this
 * work may be made except in accordance with a valid license
 * agreement from Escenic AS.  This notice must be included on
 * all copies, modifications and derivatives of this work.
 */

var positiveIntegerFilter = /^\d+$/;
var emailAddressFilter = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;


function newPopup(url) {
	popupWindow = window.open(
		url,'popUpWindow','height=700,width=800,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
}




function validateAndAppendtoURL(form, fieldName, spanId, errorMessage,url,text) {
    if(validateEmailAddress(form, fieldName, spanId, errorMessage)){
      appendtoURL(form,url,text);
       return true;
    }else{
       return false;
    }

}

function appendtoURL(form,url,text) {
   form[url].value= form[url].value+escape(utf8_encode(form[text].value));
    return true;
}


function utf8_decode(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

function utf8_encode (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	}

function populateTab(duration,type,templateVersion) {
    alert('inside');
  var myjsp2call = "/template/" + templateVersion + "/statistics/tabContent.jsp?duration="+duration+"&type="+type;
window.location.href = myjsp2call;
    return true;
}
function isEmpty(form, fieldName) {
    var value = form[fieldName].value;
    var empty = false;

    if (value == null) {
        empty = true;
    } else {
        var trimmed = value.replace(/^\s+|\s+$/g, '') ;
        if (trimmed == "" || trimmed == " ") {
            empty = true;
        }
    }

    return empty;
}

function validatePositiveInteger(form, fieldName, spanId, errorMessage) {
    return validateField(form, fieldName, spanId, positiveIntegerFilter, errorMessage)
}

function validateEmailAddress(form, fieldName, spanId, errorMessage) {
       return validateField(form, fieldName, spanId,
        emailAddressFilter, errorMessage)
}

function validateField(form, fieldName, spanId, filter, errorMessage) {
    var field = form[fieldName];
    var value = field.value;
    var errorSpan = document.getElementById(spanId);

    if (value != "" && value != null)
        {
            if (filter.test(value)) {
                return true;
            }
            else
            {
                errorSpan.innerHTML = errorMessage;
                errorSpan.className = "error";
                if (field.type!='hidden') {
                    field.style.border = '2px solid red';
                    field.focus();
                }
                return false;
            }
        }
    else
        {
            //var errorSpan = document.getElementById(spanId);
            errorSpan.innerHTML = errorMessage;
            errorSpan.className = "error";
            if (field.type!='hidden') {
                field.style.border = '2px solid red';
                field.focus();
            }
        }
    
    return false;
}

function validateEmptyField(form, fieldName, spanId, errorMessage) {

    var field = form[fieldName];
    
    var errorSpan = document.getElementById(spanId);
    if (isEmpty(form,fieldName)) {
       
        errorSpan.innerHTML = errorMessage;
        errorSpan.className = "error";
        if (field.type!='hidden') {
            field.style.border = '2px solid red';
            field.focus();
        }
        return false;
    } else {
        return true;
    }
}

function revertToNormalField(form, fieldName, spanId) {

    var field = form[fieldName];
    var errorSpan = document.getElementById(spanId);
    if (errorSpan) {
        errorSpan.innerHTML = "";
        errorSpan.className = "";
        if (field.type!='hidden') {
            field.style.border = '1px solid #BBBBBB';
        }
    }
}
/*
function validateCommentForm(form, titleErrorMessage, emailErrorMessage, bodyErrorMessage,notLoggedInError) {
    var success = true;


  revertToNormalField(form, 'field(name)', 'forum.comment.error');

    revertToNormalField(form, 'email', 'forum.comment.error');
   
    revertToNormalField(form, 'body', 'forum.comment.body.error');
    
 
   if (validateEmptyField(form, 'field(name)', 'forum.comment.error', notLoggedInError)) {

    } else {
        success = false;
    }
    

    if (validateEmailAddress(form, 'email', 'forum.comment.error', emailErrorMessage)) {

     } else {
      success = false;
     }

    if (validateEmptyField(form, 'body', 'forum.comment.body.error', bodyErrorMessage)) {

    } else {
        success = false;
    }
  

    return success;
}
*/
function validateCommentForm(form, titleErrorMessage, emailErrorMessage, bodyErrorMessage,notLoggedInError) {
    var success = true;


  revertToNormalField(form, 'field(name)', 'forum.comment.error');

    revertToNormalField(form, 'email', 'forum.comment.error');

    revertToNormalField(form, 'body', 'forum.comment.body.error');


   if (validateEmptyField(form, 'field(name)', 'forum.comment.error', notLoggedInError)) {

    } else {
        success = false;
    }


    if (validateEmailAddress(form, 'email', 'forum.comment.error', emailErrorMessage)) {

     } else {
      success = false;
     }

    if (validateEmptyField(form, 'body', 'forum.comment.body.error', bodyErrorMessage)) {

    } else {
        success = false;
    }


    return success;
}

function validateComplaintForm(form, titleErrorMessage,bodyErrorMessage) {
    var success = true;

    revertToNormalField(form, 'title', 'title.error');
    revertToNormalField(form, 'body', 'body.error');
 
    if (validateEmptyField(form, 'title', 'title.error', titleErrorMessage)  && success) {
     } else {
      success = false;
     }

    if (validateEmptyField(form, 'body', 'body.error', bodyErrorMessage)  && success) {
     } else {
      success = false;
     }
    return success;
}

function validateUserForm(form, firstNameError, surNameErrorMessage, emailErrorMessage) {
    var success = true;

    revertToNormalField(form, 'surName', 'profile.surName.error');
    revertToNormalField(form, 'email', 'profile.surName.error');
    revertToNormalField(form, 'firstName', 'profile.firstName.error');

    if (validateEmailAddress(form, 'email', 'profile.email.error', emailErrorMessage) && success) {
     } else {
      success = false;
     }

    if (validateEmptyField(form, 'surName', 'profile.surName.error', surNameErrorMessage)  && success) {
     } else {
      success = false;
     }

    if (validateEmptyField(form, 'firstName', 'profile.firstName.error', firstNameError) && success) {
    } else {
        success = false;
    }

    return success;
}

