﻿var $ = YAHOO.util.Dom.get;
var $C = YAHOO.util.Dom.getElementsByClassName;

var stripHTML = function(oldString) 
{
    return oldString.replace(/<&#91;^>&#93;*>/g, "");
}

var setSelectedIndex = function(element, value) 
{
    if (!element)
        return;
        
    for(i = 0; i < element.options.length; i++)
	{
		if (element.options[i].value == value)
		{
		    element.selectedIndex = i;
		    break;
		}
	}
}

//Validation
var validateElement = function(element) 
{
    isValid = true;
                        
    if (YAHOO.util.Dom.hasClass(element, "validate-email"))
    {
        if (!ValidatEmail(element.value))
            isValid = false;
    } 
    
    if (YAHOO.util.Dom.hasClass(element, "validate"))
    {
        if (IsEmpty(element.value))
            isValid = false;
    }
    
    if (YAHOO.util.Dom.hasClass(element, "validate-digits"))
    {
        if (!ValidateDigits(element.value))
            isValid = false;
    }
    
    parentNode = element.parentNode;
        
    if (parentNode)
    {
        if (!isValid)
        {
            showErrorRow(parentNode);                        
        } 
        else if (YAHOO.util.Dom.hasClass(parentNode, "items-error"))
        {
            hideErrorRow(parentNode);
            
            if ((element.id == "cv[password]" || element.id == "cv[passwordAgain]") && isNewCV)
                hide("labelText-error-passwordAgain", "span", $('cv[passwordAgain]').parentNode);                     
        }
        
        //extra validation
       if ((element.id == "cv[password]" || element.id == "cv[passwordAgain]") && isNewCV)
        {
            password = $('cv[password]');
            passwordAgain = $('cv[passwordAgain]');
            
            if (password.value != passwordAgain.value)
            {
                YAHOO.util.Dom.addClass(passwordAgain.parentNode, "items-error");
                                
                hide("labelText", "span", passwordAgain.parentNode);
                hide("labelText-error", "span", passwordAgain.parentNode);  
                show("labelText-error-passwordAgain", "span", passwordAgain.parentNode);  
                
                isValidTab = false;
            } 
            else if (passwordAgain.value.length > 0)
            {
                YAHOO.util.Dom.removeClass(passwordAgain.parentNode, "items-error");
            
                show("labelText", "span", passwordAgain.parentNode);
                hide("labelText-error", "span", passwordAgain.parentNode);  
                hide("labelText-error-passwordAgain", "span", passwordAgain.parentNode); 
            } 
            else 
            {
                YAHOO.util.Dom.addClass(passwordAgain.parentNode, "items-error");
                
                hide("labelText", "span", passwordAgain.parentNode);
                show("labelText-error", "span", passwordAgain.parentNode);  
                hide("labelText-error-passwordAgain", "span", passwordAgain.parentNode); 
            }
        }        
    }
        
    return isValid;
}

var IsEmpty = function(v) 
{
    return  ((v == null) || (v.length == 0)); // || /^\s+$/.test(v));
}  

var ValidatEmail = function(v) 
{
    return !IsEmpty(v) && /^[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9]@[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9][\.][a-z0-9]{2,4}$/.test(v);
} 

var ValidateDigits = function(v) 
{
    return  IsEmpty(v) || !/[^\d]/.test(v); 
}  


var validateNewPassword  = function(element)
{
    var isValidForm = true;

    oldPassElement = $('cv[old-password]');
    newPassElement = $('cv[password]');
    newPassAgainElement = $('cv[passwordAgain]');
    
    oldPassHasValue = oldPassElement.value.length > 0;
    newPassHasValue = newPassElement.value.length > 0;
    newPassAgainHasValue = newPassAgainElement.value.length > 0;
    
    hasValue = oldPassHasValue || newPassHasValue || newPassAgainHasValue;
    
    if (hasValue)
    {
        if (trim(newPassElement.value) == '' || newPassElement.value != newPassAgainElement.value)
            isValidForm = false;
            
        if (!oldPassHasValue)    
            isValidForm = false;
    }
    
    hideErrorRow(oldPassElement.parentNode);
    hideErrorRow(newPassElement.parentNode);
    hideErrorRow(newPassAgainElement.parentNode);
    
    if (!isValidForm)
    {
        if (!oldPassHasValue)
        {
            showErrorRow(oldPassElement.parentNode);
        }
        
        if (newPassElement.value != newPassAgainElement.value)
        {
            showErrorRow(newPassAgainElement.parentNode);
        }
        
        if (trim(newPassElement.value) == '')
           showErrorRow(newPassElement.parentNode); 
           
        if (trim(newPassAgainElement.value) == '')
           showErrorRow(newPassAgainElement.parentNode); 
    }
    
    return isValidForm;
}

var showErrorRow = function (parentNode)                                     
{
    YAHOO.util.Dom.addClass(parentNode, "items-error");
            
    hide("labelText", "span", parentNode);
    show("labelText-error", "span", parentNode); 
}

var hideErrorRow = function (parentNode)                                     
{
    YAHOO.util.Dom.removeClass(parentNode, "items-error");
            
    show("labelText", "span", parentNode);
    hide("labelText-error", "span", parentNode); 
}

var hide = function (className, tagName, element)                                     
{
    obj = $C(className, tagName, element);
    if (obj)
        YAHOO.util.Dom.setStyle(obj, "display", "none"); 
}

var show = function (className, tagName, element)                                     
{
    obj = $C(className, tagName, element);
    if (obj)
        YAHOO.util.Dom.setStyle(obj, "display", "inline"); 
}

var replaceHiddenValueByID = function(id, obj, value)
{
    YAHOO.util.Dom.getElementsBy(function(el) {
        return (el.getAttribute('id') == id);
        }, 'input', obj)[0].value = value;
}

var getHiddenValueByID = function(id, obj)
{
    return YAHOO.util.Dom.getElementsBy(function(el) {
        return (el.getAttribute('id') == id);
        }, 'input', obj)[0].value;
}


var getSelectByID = function(id, obj)
{
    return YAHOO.util.Dom.getElementsBy(function(el) {
        return (el.getAttribute('id') == id);
        }, 'select', obj)[0];
}

var getInputByID = function(id, obj)
{
    return YAHOO.util.Dom.getElementsBy(function(el) {
        return (el.getAttribute('id') == id);
        }, 'input', obj)[0];
}

var getSpanByID = function(id, obj)
{
    return YAHOO.util.Dom.getElementsBy(function(el) {
        return (el.getAttribute('id') == id);
        }, 'span', obj)[0];
}


var getTextAreaByID = function(id, obj)
{
    return YAHOO.util.Dom.getElementsBy(function(el) {
        return (el.getAttribute('id') == id);
        }, 'textarea', obj)[0];
}

var setUrlParam = function(url, param, v)
{
    var re = new RegExp("(\\\?|&)" + param + "=([^&]*)(&|$)", "i");
    var m = url.match(re);
    if (m)
    {        
        return (url.replace(re, function($0, $1, $2, $3) 
            {
                return $1 + param + "=" + v + $3;                 
            }));
    } else {
        if (url.indexOf('?') == -1)
            return (url + '?' + param + '=' + v);
        else
            return (url + '&' + param + '=' + v);
    }
}

var getURLParam = function(strParamName, url)
{
	var strReturn = "";
	var strHref = window.location.href;
	if (url)
	    strHref = url;
	if ( strHref.indexOf("?") > -1 )
	{
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ )
		{
			if (aQueryString[iParam].indexOf(strParamName + "=") > -1 )
			{
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return strReturn;
}

var getQueryString = function(strHref)
{
	if (strHref.indexOf("?") > -1 )
	{
		strHref = strHref.substr(strHref.indexOf("?")).toLowerCase();		
	}
	return strHref;
}

var getURL = function(strHref)
{
	if (strHref.indexOf("?") > -1 )
	{
		strHref = strHref.substr(0, strHref.indexOf("?"));		
	}
	return strHref;
}

// Trim the input string
function trim(str)
{
   return str.replace(/^\s*|\s*$/g, "");
}

function parseDateToString(date) 
{
    return date.getFullYear() + "." + (date.getMonth() + 1) + "." + date.getDate();
}
        
function parseInputDate(str) 
{
    str = str.toLowerCase();
    var regex = new RegExp("([0-9]{4}).([0-9]{1,2}).([0-9]{1,2})");	
    var match = regex.exec(str);
    if (match == null || match.length < 3) {
        // Oops, no match. Dont do anything. Or, maybe alert with a parsing error!
        return '';
    } else {
        if (match[2] < 1 || match[2] > 12)
            return '';
            
        if (match[3] < 1 || match[3] > 31)
            return '';
                
        /* We've got three matches. Now we should validate against some filters. */
        var calDate = new Date();
        calDate.setFullYear(match[1]);
        calDate.setMonth(match[2] - 1);
        calDate.setDate(match[3]);               
    	
        return calDate;
    }
}


var ValidateDate = function(v) 
{
    var test = new Date(parseInputDate(v));
    return  !IsEmpty(v) && !isNaN(test);
}  