/*
This javascript is for validating feedback form 
Created By :Jijo Joseph
Created Date:22-04-2010
Code Review By: Ramesh
*/

function validateFeedBack()
{
	var field_first_name2 = new LiveValidation( "txtFirstName", { wait: 500, onlyOnSubmit: true } );
	var field_email2 = new LiveValidation( "txtEmail", { wait: 500, onlyOnSubmit: true } );
	var field_subject = new LiveValidation( "txtSubject", { wait: 500, onlyOnSubmit: true } );
	var field_comment = new LiveValidation( "Comments", { wait: 500, onlyOnSubmit: true } );
	field_first_name2.add( Validate.Presence, { failureMessage: 'INVALID FIRST NAME' }  );
	field_first_name2.add( Validate.Length, { minimum: 2, tooShortMessage: 'MINIMUM 2 LETTERS' }  );
	field_email2.add( Validate.Email, { failureMessage: 'INVALID EMAIL' } ); field_email2.add( Validate.Presence, { failureMessage: 'INVALID EMAIL' }  );
	field_subject.add( Validate.Presence, { failureMessage: 'INVALID SUBJECT' }  );
	field_comment.add( Validate.Presence, { failureMessage: 'INVALID COMMENT' }  );

	var areAllValid = LiveValidation.massValidate( [ field_first_name2, field_email2, field_subject, field_comment ] );
	if(areAllValid)
		submitFeedBackForm();
}
function submitFeedBackForm()
{
	var br=new Array(4);
	br=getBrowser();
	var url = "email=1";
	var serverLocation = top.location.host;
	url = url + "&txtEmail="+document.getElementById('txtEmail').value;
	url = url + "&txtSubject="+document.getElementById('txtSubject').value;
	url = url + "&txtFirstName="+document.getElementById('txtFirstName').value;
	url = url + "&Comments="+document.getElementById('Comments').value;
	url = url + "&feedbackSite="+document.getElementById('feedbackSite').value;
	url = url + "&IP_address="+document.getElementById('IP_Address').value;
	url = url + "&OSName="+getOSName();
	url = url + "&BrowserVersion="+br[0]+" "+br[1];

	var d = new Date();
	var locationString = "http://"+ serverLocation + "/com/assets/feedback/feedback.cfm?"+url+"&_="+d.getTime();
	$.get(locationString,{},successFeedbackReturnNew);
}
function successFeedbackReturnNew(response, operationStatus)
{
	var resp = jQuery.trim(response);
	$('#feedContentId').html('');
	$.unblockUI();
}
function successFeedbackReturn(response, operationStatus)
{
	var resp = jQuery.trim(response);
	$('#feedContentId').html(resp);
}
function closeWindow()
{
	$('#feedContentId').html('');
	$.unblockUI();
}
function openFeedbackWindow(siteUrlFeedback,feedbackPrivacy,siteMailto)
{
	url = "siteUrlFeedback="+siteUrlFeedback;
	if(feedbackPrivacy !== undefined)
		url = url + "&feedbackPrivacy="+feedbackPrivacy;
	if(siteMailto !== undefined)
		url = url + "&siteMailto="+siteMailto;
	var serverLocation = top.location.host;
	var d = new Date();
	var locationString = "http://"+ serverLocation + "/com/assets/feedback/feedback.cfm?"+url+"&_="+d.getTime();
	$.get(locationString,{},successFeedbackReturn);
	$.blockUI({ message: $('#popupContact'), css:{cursor:'auto',top:'25%',border:'0px',background:'transparent' } });
}

var popupStatus = 0;

//loading popup with jQuery magic!
function loadPopup(){
	//loads popup only if it is disabled
	if(popupStatus==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContact").fadeIn("slow");
		popupStatus = 1;
	}
}

//disabling popup with jQuery magic!
function disablePopup(){
	//disables popup only if it is enabled
	if(popupStatus==1){
		$("#backgroundPopup").fadeOut("slow");
		$("#popupContact").fadeOut("slow");
		popupStatus = 0;
	}
	if(browserString.search("Microsoft") != -1 && browserVersion.search("MSIE 6") != -1)
	{
		if(document.getElementById("AllSubjects"))
			document.getElementById("AllSubjects").style.visibility= 'visible';
		if(document.getElementById("User_Qualification"))
			document.getElementById("User_Qualification").style.visibility = 'visible';
		if(document.getElementById("User_GraduationYear"))
			document.getElementById("User_GraduationYear").style.visibility = 'visible';
		if(document.getElementById("_category"))
			document.getElementById("_category").style.visibility = 'visible';
		if(document.getElementById("_degree"))
			document.getElementById("_degree").style.visibility = 'visible';
		if(document.getElementById("User_MainCategory"))
			document.getElementById("User_MainCategory").style.visibility = 'visible';
	}
}

//centering popup
function centerPopup(){
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContact").height();
	var popupWidth = $("#popupContact").width();
	if (windowHeight > 500)
	{
		heightCal = windowHeight/2-popupHeight/2;
		if(heightCal > 200)
			heightCal = 150;
		//centering
		$("#popupContact").css({
			"top": heightCal,
			"left": windowWidth/2-popupWidth/2
		});
	}
	else
	{
		$("#popupContact").css({
			"top": 150,
			"left": 300
		});
	}
	browserString = navigator.appName;
	browserVersion = navigator.appVersion;
	if(browserString.search("Microsoft") != -1 && browserVersion.search("MSIE 6") != -1)
	{
		$("#backgroundPopup").css({
			"height": 1300
		});
		if(document.getElementById("AllSubjects"))
			document.getElementById("AllSubjects").style.visibility= 'hidden';
		if(document.getElementById("User_Qualification"))
			document.getElementById("User_Qualification").style.visibility = 'hidden';
		if(document.getElementById("User_GraduationYear"))
			document.getElementById("User_GraduationYear").style.visibility = 'hidden';
		if(document.getElementById("_category"))
			document.getElementById("_category").style.visibility = 'hidden';
		if(document.getElementById("_degree"))
			document.getElementById("_degree").style.visibility = 'hidden';
		if(document.getElementById("User_MainCategory"))
			document.getElementById("User_MainCategory").style.visibility = 'hidden';
	}
	else
	{	
		//only need force for IE6		
		$("#backgroundPopup").css({
			"height": document.documentElement.clientHeight
		});
	}
	if (windowHeight < 500)
	{
		$("#backgroundPopup").css({
			"height": 1300
		});
	}
			

}
function nextFocus1()
{
	return;
}
function showPopup()
{
	//centering with css
	centerPopup();
	//load popup
	loadPopup();
}
function getOSName()
{
	var OSName="Unknown OS";
	if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
	if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
	if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
	if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
	return OSName;
}
function getGeckoVersion() {
    return "unknown";
}

// Return MSIE version
function getMSIEVersion() {
    return brs.match(/msie\s(\d+(\.?\d)*)/)[1];
}
function getBrowser(obj) {
    var b=new Array("unknown", "unknown", "unknown", "unknown");

    brs=navigator.userAgent.toLowerCase();
    if (brs.search(/omniweb[\/\s]v?(\d+([\.-]\d)*)/) != -1) {
    // Omniweb
        b[0]="omniweb";
        b[1]=brs.match(/omniweb[\/\s]v?(\d+([\.-]\d)*)/)[1];
        (b[1] > 4.5 ? b[2]="khtml" : b[2]="omniweb");
        (brs.search(/omniweb[\/\s]((\d+([\.-]\d)*)-)?v(\d+([\.-]\d)*)/) == -1 ?       b[3]=brs.match(/omniweb[\/\s](\d+([\.-]\d)*)/)[1] :        b[3]=brs.match(/omniweb[\/\s]((\d+([\.-]\d)*)-)?v(\d+([\.-]\d)*)/)[4]);
        return b;
    } else if (brs.search(/opera[\/\s](\d+(\.?\d)*)/) != -1) {
    // Opera
        b[0]="opera";
        b[1]=brs.match(/opera[\/\s](\d+(\.?\d)*)/)[1];
        b[2]="opera";
        b[3]=b[1];
        return b;
    } else if (brs.search(/crazy\s?browser\s(\d+(\.?\d)*)/) != -1) {
    // Crazy Browser
        b[0]="crazy";
        b[1]=brs.match(/crazy\s?browser\s(\d+(\.?\d)*)/)[1];
        b[2]="msie";
        b[3]=getMSIEVersion();
        return b;
    } else if (brs.search(/myie2/) != -1) {
    // MyIE2
        b[0]="myie2";
        b[2]="msie";
        b[3]=brs.match(/msie\s(\d+(\.?\d)*)/)[1];
        return b;
    } else if (brs.search(/netcaptor/) != -1) {
    // NetCaptor
        b[0]="netcaptor";
        b[1]=brs.match(/netcaptor\s(\d+(\.?\d)*)/)[1];
        b[2]="msie";
        b[3]=getMSIEVersion();
        return b;
    } else if (brs.search(/avant\sbrowser/) != -1) {
    // Avant Browser
        b[0]="avantbrowser";
        b[2]="msie";
        b[3]=getMSIEVersion();
        return b;
    } else if (brs.search(/msn\s(\d+(\.?\d)*)/) != -1) {
    // MSN Explorer
        b[0]="msn";
        b[1]=brs.match(/msn\s(\d+(\.?\d)*)/)[1];
        b[2]="msie";
        b[3]=getMSIEVersion();
        return b;
    } else if (brs.search(/msie\s(\d+(\.?\d)*)/) != -1) {
    // MS Internet Explorer
        b[0]="msie";
        b[1]=getMSIEVersion();
        b[2]="msie";
        b[3]=b[1];
        return b;
    } else if (brs.search(/powermarks\/(\d+(\.?\d)*)/) != -1) {
    // PowerMarks
        b[0]="powermarks";
        b[1]=brs.match(/powermarks\/(\d+(\.?\d)*)/)[1];
        b[2]="msie";
        try {
            b[3]=getMSIEVersion();
        } catch (e) { }
        return b;
} else if (brs.search(/konqueror[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Konqueror
        b[0]="konqueror";
        b[1]=brs.match(/konqueror[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="khtml";
        return b;
    } else if (brs.search(/chrome\/(\d)*/) != -1) {
    // Chrome
        b[0]="chrome";
        b[1]=brs.match(/chrome\/(\d+(\.?\d*)*)/)[1];
        b[2]="gecko";
        b[3]="unknown";
        return b;
    } else if (brs.search(/safari\/(\d)*/) != -1) {
    // Safari
        b[0]="safari";
        b[1]=brs.match(/safari\/(\d+(\.?\d*)*)/)[1];
        b[2]="khtml";
        b[3]=brs.match(/applewebkit\/(\d+(\.?\d*)*)/)[1];
        return b;
    } else if(brs.search(/zyborg/) != -1) {
    // Zyborg (SSD)
        b[0]="zyborg";
        b[1]=brs.match(/zyborg\/(\d+(\.?\d)*)/)[1];
        b[2]="robot";
        b[3]="-1"
        return b;
    } else if (brs.search(/netscape6[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Netscape 6.x
        b[0]="netscape";
        b[1]=brs.match(/netscape6[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/netscape\/(7\.\d*)/) != -1) {
    // Netscape 7.x
        b[0]="netscape";
        b[1]=brs.match(/netscape\/(7\.\d*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/galeon[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Galeon
        b[0]="galeon";
        b[1]=brs.match(/galeon[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/nautilus[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Nautilus
        b[0]="nautilus";
        b[1]=brs.match(/nautilus[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/firefox[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Firefox
        b[0]="firefox";
        b[1]=brs.match(/firefox[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/k-meleon[\/\s](\d+([\.-]\d)*)/) != -1) {
    // K-Meleon
        b[0]="kmeleon";
        b[1]=brs.match(/k-meleon[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/playstation\s3/) != -1) {
    // Playstation 3
        b[0]="netfront";
        b[1]="2.81"; // Taken from the Wikipedia article
        b[2]="playstation3"
        b[3]=brs.match(/playstation\s3;\s(\d+\.\d+)/)[1];
        return b;
    } else if (brs.search(/firebird[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Firebird
        b[0]="firebird";
        b[1]=brs.match(/firebird[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/phoenix[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Phoenix
        b[0]="phoenix";
        b[1]=brs.match(/phoenix[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/camino[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Camino
        b[0]="camino";
        b[1]=brs.match(/camino[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/epiphany[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Epiphany
        b[0]="epiphany";
        b[1]=brs.match(/epiphany[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/chimera[\/\s](\d+([\.-]\d)*)/) != -1) {
    // Chimera
        b[0]="chimera";
        b[1]=brs.match(/chimera[\/\s](\d+([\.-]\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/icab[\s\/]?(\d+(\.?\d)*)/) !=-1) {
    // iCab
        b[0]="icab";
        b[1]=brs.match(/icab[\s\/]?(\d+(\.?\d)*)/)[1];
        b[2]="icab";
        b[3]=b[1];
        return b;
    } else if (brs.search(/netfront\/(\d+([\._]\d)*)/) != -1) {
    // NetFront
        b[0]="netfront";
        b[1]=brs.match(/netfront\/(\d+([\._]\d)*)/)[1];
        b[2]="netfront";
        b[3]=b[1];
        return b;
    } else if (brs.search(/netscape4\/(\d+([\.-]\d)*)/) != -1) {
    // Netscape 4.x
        b[0]="netscape";
        b[1]=brs.match(/netscape4\/(\d+([\.-]\d)*)/)[1];
        b[2]="mozold";
        b[3]=b[1];
        return b;
    } else if ( (brs.search(/mozilla\/(4.\d*)/) != -1) && (brs.search(/msie\s(\d+(\.?\d)*)/) == -1) ) {
        b[0]="netscape";
        b[1]=brs.match(/mozilla\/(4.\d*)/)[1];
        b[2]="mozold";
        b[3]=b[1];
        return b;
    } else if ((brs.search(/mozilla\/5.0/) != -1) && (brs.search(/gecko\//) != -1)) {
    // Mozilla Seamonkey
        b[0]="mozsea";
        b[1]=brs.match(/rv\x3a(\d+(\.?\d)*)/)[1];
        b[2]="gecko";
        b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/elinks/) != -1) {
    // ELinks
        b[0]="elinks";
        (brs.search(/elinks\/(\d+(\.?\d)*)/) == -1 ?
b[1]=brs.match(/elinks\s\x28(\d+(\.?\d)*)/)[1] :
b[1]=brs.match(/elinks\/(\d+(\.?\d)*)/)[1]);
        b[2]="elinks";
        b[3]=b[1];
        return b;
    } else if (brs.search(/w3m\/(\d+(\.?\d)*)/) != -1) {
    // w3m
        b[0]="w3m"
        b[1]=brs.match(/(^w3m|\sw3m)\/(\d+(\.?\d)*)/)[2];
        b[2]="w3m";
        b[3]=b[1];
        return b;
    } else if (brs.search(/links/) != -1) {
    // Links
        b[0]="links";
        (brs.search(/links\/(\d+(\.?\d)*)/) == -1 ? b[1]=brs.match(/links\s\x28(\d+(\.?\d)*)/)[1] : b[1]=brs.match(/links\/(\d+(\.?\d)*)/)[1]);
        b[2]="links";
        b[3]=b[1];
        return b;
    } else if (brs.search(/java[\/\s]?(\d+([\._]\d)*)/) != -1) {
    // Java (as web-browser)
        b[0]="java";
        b[1]=brs.match(/java[\/\s]?(\d+([\._]\d)*)/)[1];
        b[2]="java";
        b[3]=b[1];
        return b;
    } else if(brs.search(/lynx/) != -1) {
    // Lynx (SSD)
        b[0]="lynx";
        b[1]=brs.match(/lynx\/(\d+(\.?\d)*)/)[1];
        b[2]="libwww-fm";
        b[3]=brs.match(/libwww-fm\/(\d+(\.?\d)*)/)[1];
        return b;
    } else if(brs.search(/dillo/) != -1) {
    // Dillo (SSD)
        b[0]="dillo";
        b[1]=brs.match(/dillo\s*\/*(\d+(\.?\d)*)/)[1];
        b[2]="dillo";
        b[3]=b[1];
        return b;
    } else if(brs.search(/wget/) != -1) {
    // wget (SSD)
        b[0]="wget";
        b[1]=brs.match(/wget\/(\d+(\.?\d)*)/)[1];
        b[2]="robot";
        b[3]="-1"
        return b;
    } else if(brs.search(/googlebot\-image/) != -1) {
    // GoogleBot-Image (SSD)
        b[0]="googlebotimg";
        b[1]=brs.match(/googlebot\-image\/(\d+(\.?\d)*)/)[1];
        b[2]="robot";
        b[3]="-1"
        return b;
    } else if(brs.search(/googlebot/) != -1) {
    // GoogleBot (SSD)
        b[0]="googlebot";
        b[1]=brs.match(/googlebot\/(\d+(\.?\d)*)/)[1];
        b[2]="robot";
        b[3]="-1"
        return b;
    } else if(brs.search(/msnbot/) != -1) {
    // MSNBot (SSD)
        b[0]="msnbot";
        b[1]=brs.match(/msnbot\/(\d+(\.?\d)*)/)[1];
        b[2]="robot";
        b[3]="-1"
        return b;
    } else if(brs.search(/turnitinbot/) != -1) {
    // Turnitin (SSD)
        b[0]="turnitinbot";
        b[1]=brs.match(/turnitinbot\/(\d+(\.?\d)*)/)[1];
        b[2]="robot";
        b[3]="-1"
        return b;
    } else {
        b[0]="unknown";
        return b;
    }
}

// Return browser's (actual) major version or -1 if bad version entered
function getMajorVersion(v) {
    return (isEmpty(v) ? -1 : (hasDot(v) ? v : v.match(/(\d*)(\.\d*)*/)[1]));
}

// Return browser's (actual) minor version or -1 if bad version entered
function getMinorVersion(v) {
    return (!isEmpty(v) ? (!hasDot(v) ? v.match(/\.(\d*([-\.]\d*)*)/)[1] : 0) :-1);
}
